Commit graph

504 commits

Author SHA1 Message Date
George Kiagiadakis
7bc8302740 m-monitor: connect the monitor core on activation instead of module load time
We have multiple instances of the monitor plugin, but that's ok.
connect/disonnect will not do anything bad if called multiple times

We need to connect later so that the first connection is the one from main().
Otherwise, if there is a connection error, we will see the warning from the
monitor first.
2020-06-15 18:36:33 +03:00
George Kiagiadakis
926ee5ce9f src, modules: set PW_KEY_APP_NAME on all cores 2020-06-15 17:56:05 +03:00
Julian Bouzas
3b4785f1a0 m-config-static-objects: use a local core for all objects 2020-06-12 15:04:36 -04:00
Julian Bouzas
40eb53a290 m-device-activation: enum profiles before activating bluetooth devices 2020-06-12 15:04:36 -04:00
Julian Bouzas
05aeeed90c m-device-activation: always activate alsa devices if no api alsa card property was set 2020-06-12 15:04:36 -04:00
Julian Bouzas
be3045e1f8 m-device-activation: make sure the device properties are valid before activating them 2020-06-12 15:04:36 -04:00
Julian Bouzas
70f76c7fcb m-monitor: use a shared local core for all local objects 2020-06-12 15:04:29 -04:00
Julian Bouzas
53289b9906 m-monitor: allow the monitor module to create multiple devices 2020-06-11 13:50:02 -04:00
George Kiagiadakis
8a0abd4fb8 spa-device: subclass from GObject 2020-06-11 15:05:20 +03: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
3add067254 m-device-activation: always activate bluez5 devices 2020-06-08 14:04:57 -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
George Kiagiadakis
ed7fa050c5 m-config-endpoint: debug config file matches 2020-06-03 20:28:26 +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
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
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
e944abbcd5 si-standard-link: associate links with endpoint-links 2020-06-02 13:09:00 +03: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
Julian Bouzas
7ba93fa3a1 dbus-device-reservation: use the Get method when requesting a property 2020-06-01 20:05:03 -04:00
Julian Bouzas
882b627662 dbus-device-reservation: make sure pending_task is always NULL before returning
This allows dbus requests to be done inside the task callback
2020-06-01 20:05:03 -04:00
Julian Bouzas
05401c772f m-device-activation: remove assertion in dbus device reservation API when failing to own bus 2020-06-01 20:05:03 -04:00
Julian Bouzas
522c9ea956 reserve-device: release reservation when release signal is triggered 2020-06-01 20:05:03 -04:00
Julian Bouzas
5323ee14a5 dbus-device-reservation: emit forced 'release' signal when name is lost and pending task is NULL 2020-06-01 20:05:03 -04:00
Julian Bouzas
d11c67fe98 dbus-device-reservation: change the forced param type from the 'release' signal to boolean 2020-06-01 20:05:03 -04:00
Julian Bouzas
ef47954e07 m-config-static-nodes: use wireplumber log 2020-05-29 08:43:36 -04:00
Julian Bouzas
da63c05e76 m-config-static-nodes: remove unneeded 'conected' callback and create static nodes when the plugin is activated 2020-05-29 08:43:36 -04:00
Julian Bouzas
9667cccb5a modules: move monitor device activation logic into a new device-activation module 2020-05-26 11:52:44 -04:00
Julian Bouzas
5a9cb7688a m-monitor: set the device id property when creating nodes 2020-05-26 11:29:18 -04:00
Julian Bouzas
3ad875a624 m-monitor: add device reservation data when device is augmented 2020-05-26 11:29:18 -04:00
Julian Bouzas
daa8b8f5c0 modules: add node-suspension module
This module suspends a node if idle for at least 3 seconds
2020-05-26 11:29:18 -04:00
Julian Bouzas
469c35edc8 m-monitor: remove monitor prefix from dbus device reservation API 2020-05-26 11:29:18 -04:00
Julian Bouzas
ac87822d6a m-monitor: rename device reservation data API to reserve device 2020-05-26 11:28:51 -04:00
Julian Bouzas
bc385d24bd m-monitor: rename node reservation data API to reserve node and move it to a separated file 2020-05-26 10:44:16 -04:00
Julian Bouzas
3ea183a53d m-jack-device: port to WpPlugin 2020-05-25 17:04:25 -04:00
Julian Bouzas
0d93ccff8c m-monitor: port to WpPlugin 2020-05-25 17:04:25 -04:00
George Kiagiadakis
666cd10b6d algorithms: cleanup unused code 2020-05-25 19:06:52 +03:00
George Kiagiadakis
162c1d4574 session: fix the default-endpoint prop
* Use a direction instead of a string prop id
* Emit default-endpoint-changed again
* Get rid of the useless virtual methods
2020-05-25 18:56:21 +03:00
George Kiagiadakis
8a94937b2a proxy: refactor how PARAM_Props/PropInfo are handled
+ rename FEATURE_CONTROLS to FEATURE_PROPS
+ add accessor for the standard spa_param_info (info->params)
+ hide the low-level params API that nobody uses
2020-05-25 18:54:41 +03:00