Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
pulseaudio: Redesigned to use pa_threaded_mainloop.
We weren't meant to have multiple contexts and mainloops, but we had one for each opened device and the hotplug detection thread. Instead, use pa_threaded_mainloop, which can be shared between threads and objects, and a single context (which, according to the PulseAudio documentation, is usually meant to be a singleton that represents a global server connection, possibly with multiple streams hung on it). Now instead of polling in a loop, threads will block until the threaded_mainloop runs a callback, and the callback will fire a signal to unblock the thread. Prior to this, the code upset ThreadSanitizer, as Pulse has some unprotected global resource that each mainloop/context would touch. Reference Issue #7427.
- Loading branch information