Commit Graph

490 Commits

Author SHA1 Message Date
George Kiagiadakis
0c6ef834b2 lib: properties: add wp_properties_copy_keys
A method to copy specific keys from one properties set to another
2019-09-17 16:35:14 +03:00
George Kiagiadakis
cc3f01b248 daemon config: add config command to load pipewire modules 2019-09-17 16:35:14 +03:00
George Kiagiadakis
d5acbdd87c daemon config: add the ability to register spa libraries from the config file 2019-09-17 16:35:14 +03:00
George Kiagiadakis
340b52fbee proxy: fix crash that happens when a client exits very quickly after starting
This is very easy to reproduce when the pipewire-alsa integration
is installed and you do 'arecord -l'; the alsa plugin connects and
disconnects again before the proxy is ready.

In this case we have to skip remote-global-added and we also have
to be careful with the references: the global-removed callback is
called earlier, so the core's reference to the proxy is gone and
the GTask is the only thing holding a reference to the proxy.
When we unref the GTask, the proxy is also unrefed, so we have
to keep an additional reference in order to avoid crashing
when accessing the hash table below.
2019-09-17 16:19:13 +03:00
Julian Bouzas
ac53b1165b test: move wireplumber tests into a 'wp' subfolder 2019-09-09 08:52:36 -04:00
George Kiagiadakis
371e4cf9f3 core: allow passing properties to the pw_core and pw_remote constructors 2019-09-07 18:21:17 +03:00
George Kiagiadakis
a63f2bb99b lib/wp: merge both WpRemote & WpRemotePipewire in WpCore
In practice we always create a remote and connect to pipewire.
Any other scenario is invalid, therefore, it is not justified
to be confused with so many classes for such small functionality.
This simplifies a lot the modules code.

Also, this commit exposes the pw_core and pw_remote objects
out of WpCore. This is in practice useful when dealing with low-level
pw and spa factories, which are used in the monitors. Let's not
add API wrappers for everything... Bindings will never use this
functionality anyway, since it depends on low level pipewire C API.
2019-09-07 17:55:46 +03:00
George Kiagiadakis
84b752e304 simple-endpoint: use WpProperties instead of parsing the spa_dict from the info structure 2019-09-07 11:30:08 +03:00
George Kiagiadakis
bf9cecd129 Merge branch 'master' into proxy-refactoring 2019-09-07 11:22:50 +03:00
George Kiagiadakis
95665a3496 mixer: search for "Alsa/Sink" instead of "Audio/Sink" now
Since the alsa endpoints class was renamed...
2019-09-05 15:26:29 +03:00
Julian Bouzas
fd8414aad1 bluez: handle all bluetooth profiles 2019-09-02 09:56:42 -04:00
George Kiagiadakis
72e13919a4 bluez: warn if the SPA bluez plugin is not installed instead of asserting 2019-08-29 21:23:20 +03:00
George Kiagiadakis
3d46253dd6 proxy: hide the bind() API and fix attaching the listener in wrap mode
In case the proxy was created with wp_proxy_new_wrap(), the event
listener was not attached on the pw_proxy
2019-08-29 21:21:51 +03:00
George Kiagiadakis
ac7086d156 modules: port to new WpProxy API 2019-08-29 21:21:33 +03:00
George Kiagiadakis
ff59fc06db lib: properties: add update() and copy_from_dict() API 2019-08-29 19:41:04 +03:00
Julian Bouzas
770fe8c703 simple-policy: handle bluez endpoints 2019-08-28 14:19:22 -04:00
Julian Bouzas
ad8491df44 modules: destroy all alsa/bluez nodes when an alsa/bluez device is removed 2019-08-28 14:19:22 -04:00
Julian Bouzas
c473cecbed bluez: cleaned module and set media class to Bluez/<direction>/<profile> 2019-08-28 14:19:16 -04:00
Julian Bouzas
23cc1edc28 alsa-udev: cleaned module and set media class to Alsa/<direction> 2019-08-28 11:10:11 -04:00
George Kiagiadakis
7608ae37b5 lib: implement WpProxyClient 2019-08-27 18:28:58 +03:00
George Kiagiadakis
789194b5c3 Merge remote-tracking branch 'origin/master' into proxy-refactoring 2019-08-27 18:10:41 +03:00
George Kiagiadakis
a5e867172d tests: proxy: add unit test for WpProxyNode and enum_params in particular 2019-08-27 17:40:28 +03:00
George Kiagiadakis
31a7537110 tests: proxy: improvements in the fixture and basic test
* move the watchdogs in the fixture setup
* use a new GMainContext on each fixture to avoid test dependencies
* test wp_proxy_sync
2019-08-27 17:40:28 +03:00
George Kiagiadakis
e5a05dcc2b proxy-*: improve proxy subclasses
* add proxy sync method
* add wrapers for enum/set/subscribe_params
* move the info structure handling to the subclasses
* expose info->props as WpProperties
2019-08-27 17:40:28 +03:00
Julian Bouzas
dcbf823a5a endpoint: add direction property and remove it from subclasses 2019-08-27 10:05:59 -04:00
Julian Bouzas
9a6e520721 bluez: create bluetooth endpoints 2019-08-26 11:31:38 -04:00
Julian Bouzas
5ff06a97f7 simple-endpoint: add direction property 2019-08-26 11:25:53 -04:00
Julian Bouzas
de97be850a adapter: do not use hardcoded format 2019-08-26 10:31:44 -04:00
George Kiagiadakis
2e28c9aea1 tests: add unit test for WpProxy
This also adds a "test server" helper, which is used to
start a local pipewire server in the same process, for testing
functionality that requires a server.
2019-08-25 12:45:24 +03:00
George Kiagiadakis
bdce3b4de5 proxy: refactor the proxy class to hide pipewire API and make things easier 2019-08-25 12:44:47 +03:00
George Kiagiadakis
199241894e meson: temporarily disable building modules due to API changes being in progress 2019-08-24 16:19:12 +03:00
George Kiagiadakis
8cf8b0b886 tests: add unit test skeleton and a test for WpProperties 2019-08-24 16:19:12 +03:00
George Kiagiadakis
2031809d60 lib: add new WpProperties object to wrap pw_properties & spa_dict 2019-08-24 16:19:12 +03:00
Julian Bouzas
6786b13fdc bluez: add new module to monitor bluetooth devices 2019-08-19 10:42:03 -04:00
Julian Bouzas
aa07ec09e4 remote-pipewire: add find_factory API 2019-08-19 10:41:33 -04:00
George Kiagiadakis
d4f882d731 Update for the pw_global "parent" concept removal 2019-08-19 15:24:00 +03:00
Julian Bouzas
fbf8de84fa modules: replace dsp class with stream, adapter and convert classes 2019-08-15 14:35:59 -04:00
Julian Bouzas
8d58243fa6 module-pw-alsa-udev: start the alsa monitor and create the alsa nodes 2019-08-13 14:26:38 -04:00
Julian Bouzas
f5a51c6a81 remote-pipepwire: add module_load, load_spa_handle, add_spa_lib and export APIs 2019-08-13 14:26:38 -04:00
Julian Bouzas
759aa450af remove remote-endpoints and use the new pipewire API 2019-08-13 14:26:38 -04:00
Julian Bouzas
7d4c9fa6e2 simple-policy: select the client's target name endpoint 2019-08-13 14:26:38 -04:00
Julian Bouzas
d49ed2b3f4 simple-endpoint: add target property 2019-08-13 14:26:38 -04:00
Julian Bouzas
96d940e94e softdsp-endpoint: always set name and check for alsa api when giving proper alsa name 2019-08-13 14:24:31 -04:00
George Kiagiadakis
0002722289 simple-policy: compare client creation times so that the "last one wins"
When two clients have the same role, the current policy should
favor the newest client.
2019-07-30 14:05:40 +03:00
George Kiagiadakis
b05ae5f09c simple-policy: do not leak client endpoints when rescanning 2019-07-30 13:17:58 +03:00
George Kiagiadakis
ecfcbd7b6d Merge branch 'error-handling' into 'master'
Error handling and fixes

See merge request gkiagia/wireplumber!21
2019-07-25 12:33:08 +03:00
George Kiagiadakis
baaccc92f7 proxy: fix the naming of variables that point to the instance and private structures 2019-07-25 12:27:40 +03:00
Julian Bouzas
c27c020a66 simple-endpoint-link: skip already output linked ports 2019-07-25 12:27:40 +03:00
George Kiagiadakis
4b6ea0de6e modules: initialize some spa_pod_builders inline 2019-07-25 12:27:34 +03:00
Julian Bouzas
9f07ba229c dsp: removed unneeded format property and always use the default format 2019-07-25 12:26:42 +03:00