mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-02-08 10:06:23 -05: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> |
||
|---|---|---|
| .. | ||
| examples | ||
| include | ||
| include-private/spa-private | ||
| lib | ||
| plugins | ||
| tests | ||
| tools | ||
| meson.build | ||