mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
While trying to figure out device subsets that have aren't internally contain conflicting devices, we walk through all possible subsets and check each set if it satisfies ConflictingDevices/SupportedDevices listed in UCM configuration. For a better user experience, we want to skip subsets that are fully included in another valid subset we will also generate. The iterate_device_subsets() function that achieves the former is intentionally in iterative form to avoid a stack overflow, since it will walk through 2^n sets. However, the iterate_maximal_device_subsets() function that skips incomplete sets is in recursive form, as I had assumed tail-call optimization would take care of the potential problem. Convert iterate_maximal_device_subsets() to an iterative form, because the recursion seems to trigger a segfault with more than 16 devices on PulseAudio. It doesn't seem to happen on PipeWire, but it's better to not leave it to luck. Link: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/838 Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com> |
||
|---|---|---|
| .. | ||
| acp | ||
| mixer | ||
| 90-pipewire-alsa.rules | ||
| acp-tool.c | ||
| alsa-acp-device.c | ||
| alsa-compress-offload-device.c | ||
| alsa-compress-offload-sink.c | ||
| alsa-pcm-device.c | ||
| alsa-pcm-sink.c | ||
| alsa-pcm-source.c | ||
| alsa-pcm.c | ||
| alsa-pcm.h | ||
| alsa-seq-bridge.c | ||
| alsa-seq.c | ||
| alsa-seq.h | ||
| alsa-udev.c | ||
| alsa.c | ||
| alsa.h | ||
| compress-offload-api-util.c | ||
| compress-offload-api-util.h | ||
| compress-offload-api.c | ||
| compress-offload-api.h | ||
| meson.build | ||
| test-hw-params.c | ||
| test-timer.c | ||