pipewire/spa
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
..
examples examples: dlclose on some errors 2020-07-02 16:07:54 +02:00
include spa: replace rindex() with strrchr() 2020-09-07 15:10:29 +00:00
plugins loop: make safe version of befor and after signal 2020-09-15 20:13:32 +02:00
tests Only assert about x86_64 struct sizes if ABI is LP64, not x32 2020-09-07 15:21:17 +00:00
tools initialize variables better 2020-05-20 15:24:25 +02:00
meson.build add udev rules so we don't rely on pulseaudio 2020-07-28 13:11:17 +02:00