Commit graph

46 commits

Author SHA1 Message Date
Wim Taymans
fb4475b5da adapter: evaluate node rules before loading the follower
So that the right node.rules are applied to the follower.

See #4562
2025-02-20 17:06:24 +01:00
Pauli Virtanen
fdcb02ed75 modules: add Module Name section to the module reference docs 2023-11-20 08:41:13 +00:00
Pauli Virtanen
eca773fc12 modules: strip "PipeWire Module:" from Doxygen page name
Make them appear nicer in the output.
2023-11-19 16:39:15 +00:00
Wim Taymans
07e6f44e58 modules: clean up USAGE arguments
use () to mark optional arguments to avoid confusion with arrays.
Add some more optional arguments.
2023-03-22 16:35:55 +01:00
Wim Taymans
5333c969a4 module-adapter: remove dead code 2023-03-16 13:05:53 +01:00
Barnabás Pőcze
934ab3036e treewide: use SPDX tags to specify copyright information
SPDX tags make the licensing information easy to understand and clear,
and they are machine parseable.

See https://spdx.dev for more information.
2023-02-16 10:54:48 +00:00
Wim Taymans
daf53b94ed adapter: pass spa_node to adapter
Make it possible to pass a spa_node as the follower of the adapter. This
avoids us having to wrap it in a pw_impl_node in order to unwrap it
again for the adapter spa_node.
2022-05-11 12:28:26 +02:00
Wim Taymans
8374c93e40 module-adapter: handle factory destroy
When the factory is destroyed, clean up and destroy the module as well.
2022-05-06 11:29:21 +02:00
Wim Taymans
1a911a9ccd resource: allow NULL resource in error
And then log en error instead.
We can remove some awkward patterns in modules.
2022-02-02 21:33:33 +01:00
Peter Hutterer
32fb369b66 modules: switch more modules to the new property helpers 2021-10-13 07:12:00 +00:00
Peter Hutterer
14112fd168 modules: use the new topic-based logging from various pipewire modules 2021-09-28 09:35:39 +02:00
Wim Taymans
324894e605 keys: add object.register property
Add a new object.register boolean property.

Make adapter and remote-note only register when object.register
is true.

Make stream and filter not register themselves. They are always
exported to a remote server and thus don't need local
registration.

Fixes #1309
2021-06-30 13:49:34 +02:00
Peter Hutterer
f181232a61 doc: add the documentation infrastructure for pipewire modules
All empty pages for now but at least this makes them show up in the
documentation.
2021-06-25 08:42:24 +00:00
Wim Taymans
1f85d06317 module-adapter: clear bound-resource when destroyed
So that we don't reference it anymore or try to remove the listener.
2021-06-07 12:57:09 +02:00
Barnabás Pőcze
b6c6a21747 pipewire: module-adapter: remove resource listener
Unregister the resource listener when the node is going
away to avoid use-after-free issues.

Fixes #1276
2021-06-07 10:54:19 +00:00
Peter Hutterer
e0471c6757 pipewire: allow NULL pointers in pw_properties_free()
Just like the real free() we should just ignore a NULL pointer, makes the
caller code easier for those instances where properties are optional.

Patch generated with concinelle with a few manual fixes.
2021-06-02 10:56:46 +00:00
Wim Taymans
962d3b9127 modules: don't add CLIENT_ID when lingering
Because the object is not destroyed when the client is destroyed
and so the client.id might become invalid.
2021-04-23 11:19:25 +02:00
Wim Taymans
1934df7307 pulse-server: implement OBJECT_LINGER
Use OBJECT_LINGER in module-load to make sure the module stays loaded
after the client disconnects.
Implement linger in adapter and node-factory
2020-11-26 09:28:22 +01:00
Wim Taymans
d4fc918737 module-adapter: don't remove the listener in destroy
Or else we won't receive the free event anymore and we leak the
adapter.
2020-11-09 16:49:49 +01:00
Wim Taymans
1570e62635 remove hooks from objects
Remove the hooks we installed on objects in the destroy/free event
or before calling _destroy. This is not really needed but it is
a nice thing to do because it calls the hook removed callbacks.
2020-11-06 15:53:32 +01:00
Wim Taymans
bcaf7cd722 adapter: remove redundant set_active call 2020-10-05 12:16:46 +02:00
Wim Taymans
91d4806611 permission: add some helpers
Add PW_PERM_ALL as a shortcut for all permissions
Add PW_PERMISSION_FORMAT and PW_PERMISSION_ARGS to nicely format
permissions.
2020-07-30 16:26:29 +02:00
Wim Taymans
cfce048528 adapter: pass error to factory 2020-05-08 16:18:10 +02:00
Wim Taymans
fd262aa0f2 adapter: add some debug 2020-03-03 13:04:13 +01:00
Wim Taymans
65d72bb87c improve error messages
Send create_object error messages to the new resource id so that
the client can better know what proxy is failing.
Use resource_remove when create_object fails because the core will
already send a remove_id on failure.
Try to send other errors to the proxy that made the request if
possible.
2020-02-25 16:38:13 +01:00
Wim Taymans
a528189d26 slave -> follower
We use master/follower terminology everywhere.
2020-02-21 10:47:32 +01:00
Wim Taymans
df519ee3b3 avoid including private.h
Expose some more methods to make it possible to build without
including the private.h header, especially in modules.
2020-01-02 13:48:50 +01:00
Wim Taymans
f391353c7f Make interface types a string
This is more in line with wayland and it allows us to create new
interfaces in modules without having to add anything to the type
enum. It also removes some lookups to map type_id to readable
name in debug.
2019-12-19 13:36:04 +01:00
Wim Taymans
310077438b pw_impl_factory_new -> pw_context_create_factory 2019-12-11 17:50:27 +01:00
Wim Taymans
beb3c69dfe pw_node_proxy -> pw_node 2019-12-11 15:26:11 +01:00
Wim Taymans
898e870997 pw_node -> pw_impl_node 2019-12-11 12:41:45 +01:00
Wim Taymans
443a49947e pw_module -> pw_impl_module 2019-12-11 11:57:56 +01:00
Wim Taymans
815d4a8d20 pw_factory -> pw_impl_factory 2019-12-11 11:45:27 +01:00
Wim Taymans
95688939bf pw_client -> pw_impl_client 2019-12-11 11:21:43 +01:00
Wim Taymans
d70a47b7fe move proxy implementations in their own file
Rearrange headers
2019-12-11 10:58:51 +01:00
Wim Taymans
8ea78c2e3f pw_core -> pw_context
The proxy API is the one that we would like to expose for applications
and the other API is used internally when implementing modules or
factories.

The current pw_core object is really a context for all objects so
name it that way. It also makes it possible to rename pw_core_proxy
to pw_proxy later.
2019-12-10 18:19:56 +01:00
Wim Taymans
8acae9db7d Make sure we bind before registering the global
Bind to the resource in create_object before we register the global.
This ensure a client gets to see the resource global id associated
with the resource before it appears in the registry, which makes it
easier to patch the local proxy to the global object.
2019-11-25 16:33:53 +01:00
Wim Taymans
e40fbf8cc4 Add printf checks for proxy_error and resource_error
Add an error variant without checks.
2019-11-21 16:09:05 +01:00
Wim Taymans
6e0c279bc1 improve properties on objects 2019-10-02 20:16:12 +02:00
Wim Taymans
8db4a797aa core: remove parent_id from the global event
Remove the parent_id from the global event. Remove the parent
and owner from the global object.

Use properties instead to mark parents and owners of objects.

Properties are easier to control for client exported objects and
usually a simple parent/child is not enough. For example, a client
exported node has the client as a parent but also the factory that
created the node.
2019-08-16 22:11:42 +02:00
Wim Taymans
c6a7b3eedb channelmix: implement per channel volume
Implement per channel volume on channelmix. Extend control on stream to
take an array of values when possible.

Remove name argument from pw_node_new and pw_device_new. We can pass
this as a property instead.

Improve properties on nodes to more closely match what pulseaudio does.
Don't let the monitor do too much with the udev properties but let the
session manager set the description and icon-names.

Remove some change_mask flags for things that don't change in
introspect. Use the flags to mark changes in -cli and -monitor.
2019-08-12 15:14:39 +02:00
Wim Taymans
af1b012a70 adapter: free slave in the module 2019-07-17 15:31:01 +02:00
Wim Taymans
01d9f4eb3a module-adapter: make it possible to pass the slave node pointer 2019-07-15 17:16:08 +02:00
Wim Taymans
1a6fe0e023 module-adapter: handle errors with NULL resource 2019-07-15 17:12:08 +02:00
Wim Taymans
5385bb5674 adapter: make the factory work without a resource
Free the slave when the adapter is destroyed.
2019-07-12 09:58:11 +02:00
Wim Taymans
aba81455ff adapter: add adapter node
An adapter is like an audio-dsp node and client-stream combined.
It allows tighter control with the device (for rate control and
variable buffer sizes), software volume.

The idea is to also implement the client-stream with this
eventually.
2019-07-02 17:34:26 +02:00