pipewire/spa/plugins/support
Wim Taymans 05ae8a24de loop: make safe version of befor and after signal
Use a safer version of the before and after hooks. First call
all before hooks and save them in reverse order in a save list.
Then call the after event for the ones remaining in the save list
and move them back to the hook list.

This makes it possible to remove the hooks from one the callbacks or
even from other threads with the right locks. Found as a solution to
the following problem as observed in vlc:

main thread                            thread_loop

pw_thread_loop_lock()            before hook: lock suspend thread
pw_context_destroy()
  - removes before hook to flush clients
pw_thread_loop_unlock()
                                 before hook: lock acquired, resume
				 before hook: flush client hook executed
				   *crash*

pw_thread_loop_stop()
pw_thread_loop_destroy()

Any of the safer cursor methods (like spa_hook_list_call()) would also
work but are more expensive and don't reverse the before/after
order.
2020-09-15 20:13:32 +02:00
..
cpu-arm.c printf format fixes 2019-06-07 17:16:02 +02:00
cpu-x86.c cpu: detect MMXEXT as well 2018-12-17 13:37:27 +01:00
cpu.c cpu: add fallback dummy init() function 2020-01-15 13:57:59 +01:00
dbus.c Fix some -Wenum-conversion errors 2020-04-04 20:03:08 +02:00
evl-plugin.c Add evl system support 2019-06-24 09:42:05 +02:00
evl-system.c evl: add include for spa_strerror 2020-07-14 14:19:26 +02:00
logger.c logger: handle file without '/' in it 2020-05-29 20:32:55 +02:00
loop.c loop: make safe version of befor and after signal 2020-09-15 20:13:32 +02:00
meson.build support: add null audio sink 2020-08-20 18:00:00 +02:00
node-driver.c support: add dummy driver 2020-04-27 20:21:31 +02:00
null-audio-sink.c support: add null audio sink 2020-08-20 18:00:00 +02:00
plugin.c support: add null audio sink 2020-08-20 18:00:00 +02:00
system.c add more debug of fd create and close 2020-06-02 14:06:51 +02:00