Commit Graph

21 Commits

Author SHA1 Message Date
George Kiagiadakis
0d072874a1 lib: introduce WpComponentLoader and remove WpModule
The component loader is a more generic and extensible mechanism
of loading components; modules are one type of component...
The idea is to make scripts and config files also be components,
loaded by plugins that inherit WpComponentLoader
2021-02-03 17:16:51 +02:00
George Kiagiadakis
f61e292959 plugin: inherit from WpObject
* use the activate/deactivate system from WpObject,
  which allows async activation and error reporting
* drop 'module' property, use 'core' from WpObject
2021-02-03 17:16:51 +02:00
George Kiagiadakis
3762388831 spa-type: refactor
* Use a more complete API to introspect SPA types
* Avoid the need for the Tables enumeration; the tables
  are now registered with a string
* Avoid the need for initialization, work directly on spa_types
  and other static data
* Allow working with Object pods that are not Params;
  the PARAMS table was previously hardcoded in the pod implementation
* Add a different dynamic type registration system, closer to
  how spa type works. The only regression is that we can no longer
  register additional custom object fields (custom SPA_PROP_* for example),
  but this feature can be re-added later
2021-01-15 16:30:01 +02:00
George Kiagiadakis
a2181fc3f4 Merge remote-tracking branch 'origin/master' into next 2020-12-01 11:16:13 +02:00
George Kiagiadakis
bd65517b7d pw-object-mixin: refactor, implement param caching and features for impl objects
Now the WpPipewireObject interface is directly implemented by the mixin
and there is another interface that users of the mixin must implement
in order for the mixin to work proprely.

A lot of manual stuff that proxy classes had to do before are now
in the mixin. Also most of the data that would normally reside in Private
structures is now in the mixin data structure (stored as qdata on the object).
This is achieving the best amount of code reuse so far.

For impl objects (WpImpl*) there are also default implementations of the
standard pipewire object methods and the INFO & PARAM_* features are
more coherently enabled during the whole lifetime of these objects.
2020-11-25 22:44:29 +02:00
George Kiagiadakis
ccdc354445 modules: port modules and their tests to the new proxy APIs
Disable m-session-settings for now, as it needs further work
2020-11-15 20:26:15 +02:00
Julian Bouzas
f486cd389d m-device-activation: use profile from default-profile module if loaded 2020-11-13 14:20:54 -05:00
Julian Bouzas
763f0f1795 m-monitor: add use-acp flag 2020-11-13 14:20:54 -05:00
Julian Bouzas
321545a32c modules: refactor dbus reservation
The Dbus device reservation has been moved into a separate module, and has also
been refactored to allow reserving a device name before an actual device is
created. Devices now are created and destroyed by the monitor depending on
whether PipeWire owns the device or not. This also simplifies a lot the device
activation module to always enable devices when they are created, and never
worry about checking whether a device is acquired by PipeWire or not.
2020-10-22 14:33:59 -04:00
Julian Bouzas
bc17aaa397 plugin: add name property 2020-10-22 08:40:27 -04:00
Julian Bouzas
0913257d2e m-device-activation: assume last profile as the one with highest priority 2020-07-23 09:12:52 +00:00
Julian Bouzas
6550718823 m-device-activation: fix typo when parsing device profiles 2020-07-23 09:12:52 +00: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
George Kiagiadakis
8a0abd4fb8 spa-device: subclass from GObject 2020-06-11 15:05:20 +03:00
George Kiagiadakis
8d77793a2a improve some debug logs 2020-06-10 12:53:22 +03:00
Julian Bouzas
3add067254 m-device-activation: always activate bluez5 devices 2020-06-08 14:04:57 -04:00
Julian Bouzas
371e6f90ac reserve-device: clean jack device activation logic 2020-06-05 14:26:06 -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
9667cccb5a modules: move monitor device activation logic into a new device-activation module 2020-05-26 11:52:44 -04:00