Spa Device¶
-
struct
WpSpaDevice
¶ A WpSpaDevice allows running a
spa_device
object locally, loading the implementation from a SPA factory. This is useful to run device monitors inside the session manager and have control over creating the actual nodes that thespa_device
requests to create.To enable the spa device, call wp_object_activate() requesting WP_SPA_DEVICE_FEATURE_ENABLED.
For actual devices (not device monitors) it also possible and desirable to export the device to PipeWire, which can be done by requesting WP_PROXY_FEATURE_BOUND from wp_object_activate(). When exporting, the export should be done before enabling the device, by requesting both features at the same time.
GObject Properties
GObject Signals
- create-object
- object-removed
-
enum
wpspadevice::
WpSpaDeviceFeatures
¶ Flags to be used as WpObjectFeatures for WpSpaDevice.
Values:
-
WP_SPA_DEVICE_FEATURE_ENABLED
= (WP_PROXY_FEATURE_CUSTOM_START << 0)¶ enables a spa device
-
-
WpSpaDevice*
wp_spa_device_new_wrap
(WpCore * core, gpointer spa_device_handle, WpProperties * properties)¶ Constructs an SPA Device object from an existing device handle.
- Return
(transfer full): A new WpSpaDevice
- Parameters
core
: the wireplumber corespa_device_handle
: the spa device handleproperties
: (nullable) (transfer full): additional properties of the device
-
WpSpaDevice*
wp_spa_device_new_from_spa_factory
(WpCore * core, const gchar * factory_name, WpProperties * properties)¶ Constructs a
SPA_TYPE_INTERFACE_Device
by loading the given SPA factory_name.To export this device to the PipeWire server, you need to call wp_object_activate() requesting WP_PROXY_FEATURE_BOUND and wait for the operation to complete.
- Return
(nullable) (transfer full): A new WpSpaDevice wrapping the device that was constructed by the factory, or NULL if the factory does not exist or was unable to construct the device
- Parameters
core
: the wireplumber corefactory_name
: the name of the SPA factoryproperties
: (nullable) (transfer full): properties to be passed to device constructor
-
WpProperties*
wp_spa_device_get_properties
(WpSpaDevice * self)¶ Gets the properties of this device.
- Return
(transfer full): the device properties
- Parameters
self
: the spa device
-
WpIterator*
wp_spa_device_new_managed_object_iterator
(WpSpaDevice * self)¶ Iterates through all the objects managed by this device.
- Return
(transfer full): a WpIterator that iterates over all the objects managed by this device
- Since
0.4.11
- Parameters
self
: the spa device
-
GObject*
wp_spa_device_get_managed_object
(WpSpaDevice * self, guint id)¶ Gets one of the objects managed by this device.
- Return
(transfer full): the managed object associated with id
- Parameters
self
: the spa deviceid
: the (device-internal) id of the object to get
-
void
wp_spa_device_store_managed_object
(WpSpaDevice * self, guint id, GObject * object)¶ Stores or removes a managed object into/from a device.
- Parameters
self
: the spa deviceid
: the (device-internal) id of the objectobject
: (transfer full) (nullable): the object to store or NULL to remove the managed object associated with id
-
void
wp_spa_device_set_managed_pending
(WpSpaDevice * self, guint id)¶ Marks a managed object id pending.
When an object id is pending, Props from received ObjectConfig events for the id are saved. When wp_spa_device_store_managed_object later sets an object for the id, the saved Props are immediately set on the object and pending status is cleared.
If an object is already set for the id, this has no effect.
- Parameters
self
: the spa deviceid
: the (device-internal) id of the object
-
WP_TYPE_SPA_DEVICE
(wp_spa_device_get_type ())¶ The WpSpaDevice GType.