Commit graph

739 commits

Author SHA1 Message Date
Julian Bouzas
c7982a8317 core: rename context property to g-main-context 2020-06-10 13:29:52 -04:00
Julian Bouzas
eb39dec68b core: add wp_core_clone API 2020-06-10 13:29:44 -04:00
George Kiagiadakis
a9edb65eab m-monitor: fix icon name when device.bus is NULL 2020-06-10 18:12:43 +03:00
George Kiagiadakis
8d77793a2a improve some debug logs 2020-06-10 12:53:22 +03:00
George Kiagiadakis
7a486f1f7c impl-node: subclass from GObject
By mistake, WpImplNode was developed by keeping in mind that the proxy
returned by pw_core_export() is a PW_TYPE_INTERFACE_Node, but this
is not true. It's actually a ClientNode...

Unfortunately, making WpImplNode work as if it was a WpNode is
not so easy, especially when it comes to handling params, which
need to be queried syncrhonously on the underlying spa_node.

So, instead of fixing WpImplNode to work as a WpNode, we choose to
disconnect them. This way, WpImplNode will not be used as a proxy
in the registry and the registry will normally create WpNode proxies
instead, making round-trips through the server to change node params.
2020-06-10 11:12:11 +03:00
Julian Bouzas
74eee35e6f src: config: add bluez5 endpoint files 2020-06-08 14:06:12 -04:00
Julian Bouzas
3add067254 m-device-activation: always activate bluez5 devices 2020-06-08 14:04:57 -04:00
Julian Bouzas
e68cd7b700 src: config: enable bluetooth monitor 2020-06-08 11:15:06 -04:00
Julian Bouzas
9f39706877 reserve-device: acquire device if it has no owner for at least 3 seconds 2020-06-07 16:28:44 -04:00
Julian Bouzas
cd3401bcb5 dbus-device-reservation: add owner-appeared/owner-vanished signals, and remove acquired callback 2020-06-07 16:28:44 -04:00
Julian Bouzas
c8582d255e reserve-device: don't increment jack_n_acquired if it is 0 and use the updated value when setting data 2020-06-07 16:28:18 -04:00
Julian Bouzas
371e6f90ac reserve-device: clean jack device activation logic 2020-06-05 14:26:06 -04:00
Julian Bouzas
be8629fbec spa-pod: keep a reference of the pod in the ierator 2020-06-04 09:48:43 -04:00
Julian Bouzas
9728418b6d spa-pod: remove const-ness from API 2020-06-04 09:48:43 -04:00
Julian Bouzas
1e2dcb44ca spa-pod: set the type to regular when creating int spa pod 2020-06-04 09:48:43 -04:00
Julian Bouzas
671d748b4b spa-pod: remove _wrap_copy APIs from the private header 2020-06-04 09:48:43 -04:00
Julian Bouzas
3a93190ec9 lib: fix const compile warnings by using the wp_spa_pod_new_wrap_const API 2020-06-04 09:48:43 -04:00
Julian Bouzas
e63ca28b3a spa-pod: add _new_wrap_const APIs 2020-06-04 09:48:43 -04:00
Julian Bouzas
b9acfcb237 spa-pod: rename spa pod _new_regular_wrap APIs to just _new_warp 2020-06-04 09:48:43 -04:00
George Kiagiadakis
71d12fe12a debug: add doc comments 2020-06-03 21:40:01 +03:00
George Kiagiadakis
f7d816f5d2 debug: print proxy bound IDs on objects, if they are bound proxies 2020-06-03 21:28:14 +03:00
George Kiagiadakis
4130cf17ca config: restructure wireplumber.conf and add comments for documentation 2020-06-03 21:13:03 +03:00
George Kiagiadakis
ded2d5e221 config: add .endpoint files to match jack nodes and prioritize them over alsa
if jack is running, that probably means that we want the jack
endpoints to be the default playback/capture path
2020-06-03 20:35:31 +03:00
George Kiagiadakis
1bae4a6a41 proxy: use a core sync to know when Props have been enumerated
This is necessary to finish augmenting nodes that advertise
PropInfo & Props in their param info but they don't actually have
any properties, so there is no param event emitted
(ex. the jack device nodes)

Because the sync is synchronous with the calls over the protocol,
the callback is ensured to be called after all the param events
have been emitted
2020-06-03 20:28:43 +03:00
George Kiagiadakis
ed7fa050c5 m-config-endpoint: debug config file matches 2020-06-03 20:28:26 +03:00
George Kiagiadakis
dab02b5a05 add NEWS.md 2020-06-03 11:41:25 +03:00
Julian Bouzas
3c36f20d23 src: config: add jack.device file and removed jack device module 2020-06-02 12:24:47 -04:00
Julian Bouzas
ef2e892341 m-config-static-objects: add device parser to create static devices 2020-06-02 12:24:47 -04:00
Julian Bouzas
d3cb1bd84d modules: rename config-static-nodes to config-static-objects 2020-06-02 12:24:47 -04:00
George Kiagiadakis
a3cf986188 proxy: fix recursion crash in _set_feature_ready 2020-06-02 19:21:04 +03:00
George Kiagiadakis
e1e6411e19 proxy: when requesting Props, only try to enum them if the proxy supports them
otherwise we get stuck waiting for the param event
and we get warnings on the debug log
2020-06-02 19:09:18 +03:00
George Kiagiadakis
8627fdf1a0 proxy: fix crash when _augment_error() is called recursively from within itself 2020-06-02 18:37:42 +03:00
George Kiagiadakis
e1139fcf04 meson: bump version for 0.3.0 RC1 2020-06-02 18:37:13 +03:00
George Kiagiadakis
c8b11fad42 lib: add a version header 2020-06-02 18:26:40 +03:00
George Kiagiadakis
4879937620 wpctl: actually print the endpoint description also on links 2020-06-02 18:25:34 +03:00
George Kiagiadakis
651701a471 endpoint: use the node.name as the endpoint name and add endpoint.description
endpoint.description is now the user-friendly string
we want the endpoint name to be machine-friendly because it's
the identifier that we store in m-session-settings
2020-06-02 17:46:35 +03:00
George Kiagiadakis
b17dab8c9b spa-device: delay activation until after the device is exported
this allows the created nodes to be able to set their "device.id"
property correctly
2020-06-02 17:24:14 +03:00
George Kiagiadakis
3807d95ec5 m-monitor: update node properties to match the ones that media-session sets 2020-06-02 15:51:13 +03:00
George Kiagiadakis
5a0028886b m-config-policy: refactor the target search logic and add debug messages
- fall back to the default logic if node.target is set but it doesn't exist
- use the default endpoint if it is within the [target-endpoint] matches;
  this way we can use a config file to override just the stream name,
  for instance, while still respecting the default endpoint
- prefer use of the lookup methods instead of manual iterations

previously the default endpoint was not respected because our config
files have a [target-endpoint] table..
2020-06-02 13:09:00 +03:00
George Kiagiadakis
e4e60c2ece endpoint-stream: add GObject property to access the name 2020-06-02 13:09:00 +03:00
George Kiagiadakis
8c40bbbce0 endpoint: add GObject properties to access the name, media-class & direction 2020-06-02 13:09:00 +03:00
George Kiagiadakis
0bba0c0df1 properties: fix const-ness warnings 2020-06-02 13:09:00 +03:00
George Kiagiadakis
78209c48c7 endpoint/endpoint-stream: remove useless virtual methods
they are not useful anymore because we hijack priv->info from the
impl subclass, so that it points to the impl info struct,
and therefore the base implementations work just fine
2020-06-02 13:09:00 +03:00
George Kiagiadakis
e944abbcd5 si-standard-link: associate links with endpoint-links 2020-06-02 13:09:00 +03:00
Julian Bouzas
128b67e265 src: config: update default configuration to handle nodes created by the jack device 2020-06-01 20:05:03 -04:00
Julian Bouzas
4212d68d9c m-config-endpoint: show a warning if endpoint failed to activate or export 2020-06-01 20:05:03 -04:00
Julian Bouzas
69dfe0e203 m-device-activation: use wp_core_timeout_add_closure instead of wp_core_timeout_add in reserve node API 2020-06-01 20:05:03 -04:00
Julian Bouzas
3e12d239ef m-device-activation: sync with core before activating to make sure jack-device is exported 2020-06-01 20:05:03 -04:00
Julian Bouzas
2c64dd4476 reserve-device: enable/disable jack-device if audio device is owned/unowned by the JACK server 2020-06-01 20:05:03 -04:00
Julian Bouzas
27fa7ff619 reserve-device: show info instead of warning when devices could not be acquired 2020-06-01 20:05:03 -04:00