pipewire/spa/plugins
Torkel Niklasson deb79b74c6 audioconvert: sync filter-graphs out of data loop before forced rebuild
A forced setup_filter_graphs() deactivates and re-instantiates every graph,
which frees and recreates the underlying plugin handles (node_cleanup sets
node->hndl[i] = NULL before re-instantiating). This was done on a graph that
was still referenced by the RT data-loop snapshot (filter_graph[]), so the
RT thread could run a graph whose handles were NULL mid-rebuild, leading to a
NULL handle dereference in the filter-graph process path.

Mirror the safe ordering already used by load_filter_graph()/clean_filter_handles():
before reconfiguring, mark the graphs not-setup and sync_filter_graph() so the
data loop drops them from filter_graph[] under the loop lock. They are
republished by the sync that follows setup. The cheap snapshot swap is done
under the lock; the heavy re-instantiation stays off the RT path.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-07 14:28:03 +02:00
..
aec Please replace the comma operator with the correct semicolon when setting aec.name and aec.latency. This will help avoid syntax errors and improve readability. 2026-06-25 14:23:03 +02:00
alsa alsa: acp: emit route param updates when card properties change 2026-06-15 13:04:14 +02:00
audioconvert audioconvert: sync filter-graphs out of data loop before forced rebuild 2026-07-07 14:28:03 +02:00
audiomixer audiomixer: rate limit the "out of buffers" debug 2026-04-28 12:11:42 +02:00
audiotestsrc audiotestsrc: Operate as follower too 2025-12-16 13:15:00 +01:00
avb treewide: make more file descriptors cloexec 2026-05-08 14:53:01 +02:00
bluez5 bluez5: fix wrong use of F_GETFL and F_SETFL 2026-05-08 14:53:01 +02:00
control mixer: handle control.ump property 2026-04-07 10:08:14 +02:00
ffmpeg spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
filter-graph filter-graph: sync_volume initializes the control ports 2026-05-20 11:39:54 +02:00
jack *: don't include standard C headers inside of extern "C" 2025-05-30 09:48:28 +01:00
libcamera spa: libcamera: use std::span 2026-03-28 01:22:27 +01:00
support treewide: make more file descriptors cloexec 2026-05-08 14:53:01 +02:00
test spa: make the wave, pattern and ditherType Int 2025-06-13 10:06:09 +02:00
v4l2 security: add missing O_CLOEXEC flag to V4L2 device open 2026-05-08 13:53:17 +02:00
videoconvert spa: limit the number of buffer blocks 2026-05-08 12:17:50 +02:00
videotestsrc loop: spa_loop_invoke -> spa_loop_locked where possible 2025-05-30 11:59:35 +02:00
volume treewide: access the position information using helpers 2025-10-21 13:06:25 +02:00
vulkan treewide: make more file descriptors cloexec 2026-05-08 14:53:01 +02:00
meson.build filter-chain: move the filter-graph to plugins 2024-11-13 11:12:06 +01:00