Commit graph

16 commits

Author SHA1 Message Date
Barnabás Pőcze
37fa911a72 pulse-server: module: rework registry
Move all module methods into the `module_info` struct, and place
all such structs into the "pw_mod_pulse_modules" section of
the executable. This way there is no need for an explicit
module registry, and all information about a module can
be declared in the module's source file in a single place.
2022-04-11 03:02:08 +02:00
Pauli Virtanen
01a83a1362 pulse-server: make some modules load-once
Add mechanism for allowing some modules to be loaded only once.

Mark always-sink, raop-discover, switch-on-connect, zeroconf-discover as
such.
2022-02-13 17:50:54 +02:00
Barnabás Pőcze
f5e561c2fe pulse-server: module: remove unused client argument
None of the modules use the `client` argument in their
unload callbacks. Remove it.
2022-02-02 15:40:43 +00:00
Wim Taymans
0904a35ba8 pulse-server: make separate index
Separate the id (the pipewire object id) from the index (what we send to
the client to identify the objects).
2022-01-17 12:01:13 +01:00
Barnabás Pőcze
b08da23715 pulse-server: module: do not schedule unloading multiple times
While it is not a problem since `module_free()` calls
`pw_work_queue_cancel()`, it is completely unnecessary
to do it more than once.

Introduce a new flag on the module which stores whether or
not an unloading has been scheduled.
2021-12-28 19:53:27 +00:00
Barnabás Pőcze
0e75b3fa0f pulse-server: handle if the module is destroyed while loading
Create a new event for modules ('destroy') which is emitted from
`module_free()`. It is used by the module loading logic, to handle
when a module is destroyed without properly loading first.
2021-12-26 19:37:41 +00:00
Wim Taymans
c8f629a0a3 pulse-server: improve module args compatibility
Boolean switches can also be true with 'y', 'yes', 't' and 'on'
2021-09-21 17:39:11 +02:00
Barnabás Pőcze
c9f5deb81d pulse-server: split out module handling
Part of !776.
2021-06-25 03:23:37 +02:00
Barnabás Pőcze
49d31ea0af pulse-server: split out reply, operation, client, stream
Part of !776.
2021-06-25 03:23:27 +02:00
Barnabás Pőcze
bd6f63fecd pulse-server: improve module loading
Modules no longer need to emit the "loaded" event manually
if they can load immediately. In that case, the module loading
code will take care of emitting the event. If they can't,
they must return an async spa result, and emit the "loaded" event
when they see fit.

Fixes #1232
2021-06-11 20:50:30 +02:00
Barnabás Pőcze
4d02233ff3 pulse-server: don't broadcast remove event when a module wasn't loaded 2021-06-11 20:50:30 +02:00
Barnabás Pőcze
6f5b089767 pulse-server: clear hook list when module is freed
Moreover, rename the hook list to "listener_list".
2021-06-11 20:50:30 +02:00
Barnabás Pőcze
1d5fb2a7db pulse-server: remove unnecessary struct members 2021-06-11 20:50:30 +02:00
Wim Taymans
639e6ea644 pulse-server: use the work-queue to unload modules
This avoids allocating an eventfd for each module.
2021-04-21 13:17:28 +02:00
Wim Taymans
fee8bf69dd pulse-server: make method to schedule module unload 2021-04-21 13:11:16 +02:00
Arun Raghavan
74140abada pulse-server: Factor out module code to compile independently
This starts breaking up the giant monolith that is the pulse-server.c
code into more manageable chunks by trying to split the module code into
individual compilation units.
2021-04-15 19:37:15 -04:00