pipewire/spa/plugins
Wim Taymans 9c19284f7f support: make the loop queue handling lockfree
Don't use TSS to store per-thread queues but keep a lockfree stack of
queues. We can then pick off a queue and write to that one and place it
back after use.

We need to keep the queues indexed by id in the stack because otherwise
we would need to compare-and-swap 128 bits (pointer + tag), which is
more problematic.

Because we keep the queues in an array and no queue is ever removed and
the array can only grow, we can quite easily just iterate the array
without a lock. Without the lock we also fix one of the potential
problems with ardour where the queue_flush thread is canceled while
flushing and the queue_mutex remains locked.

Because we end up with all queues in the array now, we can overflow the
fixed max amount of queues we can manage. When that happens, sleep for a
while and try again. This is a case where more than QUEUES_MAX (128) threads
are invoking at the same time and is rather unlikely.

There is also the queue overflow case which we now also must handle with
a retry. This potentially uses more eventfds but again this should be
unlikely and cause no further problems.

See #4356
2024-11-04 17:41:14 +01:00
..
aec spa: add spa_json_begin_array/object and relaxed versions 2024-09-16 09:50:33 +02:00
alsa alsa: clean up followers and our driver link in _clear 2024-10-21 15:47:21 +02:00
audioconvert audioconvert: interchange the resampler loops 2024-10-30 13:31:24 +01:00
audiomixer spa: revert peer_enum_params node event again 2024-06-20 10:22:45 +02:00
audiotestsrc spa: audiotestsrc: Validate loop and system before using them 2024-10-23 08:25:30 -04:00
avb json: add helper function to parse channel positions 2024-09-18 09:54:34 +02:00
bluez5 bluez5: backend-native: update HFP SDP records 2024-10-31 08:18:45 +00:00
control control: add support for mixing to UMP 2024-07-29 18:15:58 +02:00
ffmpeg spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
jack spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
libcamera libcamera: allocate memory according to the number of discontiguous memory 2024-10-30 15:20:21 +00:00
support support: make the loop queue handling lockfree 2024-11-04 17:41:14 +01:00
test spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
v4l2 spa: use a separate logind dependency separate from systemd 2024-09-21 21:56:34 +00:00
videoconvert adapter: increase max-retry to 64 2024-10-07 09:28:39 +02:00
videotestsrc Port videotestsrc to LoopUtils 2024-07-01 15:28:14 +00:00
volume spa: fix volume plugin compilation 2024-06-18 15:44:26 +02:00
vulkan treewide: fix more -Wformat issues 2024-06-30 19:22:17 +00:00
meson.build meson: fix build with missing libudev-devel 2024-02-06 11:49:40 +01:00