aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2021-07-28src: install the example clientGeorge Kiagiadakis1-0/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28src: install the pipewire-ic-ipc.conf fileGeorge Kiagiadakis1-0/+5
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28tests: add a meson test setup to run tests under valgrindGeorge Kiagiadakis1-0/+12
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28meson: build a static library by defaultGeorge Kiagiadakis1-0/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28lib: install defs.hGeorge Kiagiadakis1-0/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28server: add systemd units + socket-activation supportGeorge Kiagiadakis7-23/+119
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28server: sync suspend status after binding metadataGeorge Kiagiadakis1-0/+8
If the icipc server got a suspend request before the metadata object was bound, set the metadata after binding. This also helps in case the pw_core was disconnected and reconnected while there was still an icipc client actively suspending playback Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28src: implement the icipc server process as a pipewire moduleGeorge Kiagiadakis5-4/+437
This can be loaded with `pipewire -c pipewire-ic-ipc.conf` Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28meson: set -D_GNU_SOURCE in the project arguments, remove other definitionsGeorge Kiagiadakis5-12/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28lib: initialize epoll_event structuresGeorge Kiagiadakis2-2/+2
caught by valgrind Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28lib: avoid static buffers, use alloca() moreGeorge Kiagiadakis3-6/+11
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28lib: remove dependency on spa_pod and spa in generalGeorge Kiagiadakis12-188/+368
Replace spa_pod with a custom icipc_data structure, which is based on spa_pod and it's fully compatible with it Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28style: convert code to systemd coding styleGeorge Kiagiadakis18-1785/+1731
https://systemd.io/CODING_STYLE/ Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28tests: port away from glibGeorge Kiagiadakis6-173/+352
Use a heavily stripped-down copy of pipewire's test framework instead Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28icipc: make everything build again after splitting it out of wireplumberGeorge Kiagiadakis9-10/+82
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28tests: create wpipc tests sockets also in /tmp with a random nameGeorge Kiagiadakis2-17/+31
See #39, #16 Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28tests: examples: print error if buffer is not valid in wpipc-clientJulian Bouzas1-5/+10
If we lose connection with the server while a request was pending, the request callback is still triggered but with NULL buffer. Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28tests: wpipc: check if new connection to new receiver is valid after losing ↵Julian Bouzas1-0/+12
connection Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28wpipc: sender: disconnect and clear all pending tasks if connection was lostJulian Bouzas1-8/+34
If we don't remove the socket from epoll when the connection is lost, we risk having the lost callback triggered more than once by epoll, creating race condition in the unit test because more than 1 event happened. The epoll thread and socket will be re-created again when re-connecting. Note that we cannot destroy the epoll thread before triggering the lost connection callback because we are running the callback in the epoll thread, which is why removing the socket from epoll is the only way to make sure the lost connection callback is only triggered once. Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28wpipc: receiver: also emit sender disconnected when failed to readJulian Bouzas1-6/+3
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28wpipc: protocol: make sure buffer is initialized to 0 before building ↵Julian Bouzas1-0/+7
reply/request Fixes valgrind errors Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28wpipc: change epoll thread func type name to be more consistentJulian Bouzas2-9/+9
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28tests: wpipc: use GCond instead of while loop to wait for eventsJulian Bouzas2-16/+24
Fixes hanging issues when running test with valgrind. Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28tests: wpipc: fix typo in sender-receiver unit testJulian Bouzas1-1/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28tests: fix coverity scan side effect in assertion issuesJulian Bouzas1-0/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28lib: fix some issues found by coverityGeorge Kiagiadakis1-2/+5
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28Revert "tests: enable G_SLICE=debug-blocks in all tests"George Kiagiadakis1-1/+0
This breaks the valgrind test setup, as this G_SLICE overrides G_SLICE=always-malloc from valgrind_env This reverts commit f806da6f3e30d032a5fff545211d80d64c197841. Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28tests: enable G_SLICE=debug-blocks in all testsGeorge Kiagiadakis1-0/+1
This can catch allocation mistakes in the g_slice allocator Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28meson: use environment() objects to define env for testsGeorge Kiagiadakis1-4/+4
it's just a nicer syntax Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28wpipc: place sockets in the same runtime directory as pipewireGeorge Kiagiadakis6-12/+57
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28wpipc: remove socket files after shutdown of the serverGeorge Kiagiadakis1-0/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28meson: generate and install pkg-config file for wpipcGeorge Kiagiadakis1-0/+4
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28meson: find threads_dep early and also use it in the wpipc-clientGeorge Kiagiadakis1-1/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28wpipc: use proper api & so versionsGeorge Kiagiadakis1-2/+7
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28meson: replace join_paths() with operator /George Kiagiadakis1-1/+1
Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28meson: make wpipc optional and disabled by defaultGeorge Kiagiadakis1-0/+5
This is only intended to be used with specific embedded applications. There is no good reason to use it on a standard desktop environment. Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-28lib: add wpipc libraryJulian Bouzas20-0/+2471
Simple library that uses sockets for inter-process communication. It provides an API to create server and client objects. Users can add custom handlers in the server, and clients can send requests for those custom handlers. Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
2021-07-19Initial empty repositorykoi_11.0.3koi/11.0.311.0.3Jan-Simon Moeller0-0/+0