Skip to content

Commit

Permalink
pulseaudio: Redesigned to use pa_threaded_mainloop.
Browse files Browse the repository at this point in the history
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
icculus committed May 26, 2023
1 parent 81fe505 commit 35292d7
Show file tree
Hide file tree
Showing 2 changed files with 265 additions and 210 deletions.
Loading

0 comments on commit 35292d7

Please sign in to comment.