
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.
…
…
…
…
…
…
…
…
Simple DirectMedia Layer (SDL) Version 3.0
Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D. It is used by video playback software, emulators, and popular games including Valve's award winning catalog and many Humble Bundle games.
More extensive documentation is available in the docs directory, starting with README.md
Enjoy!
Sam Lantinga (slouken@libsdl.org)
Description
Languages
C
90.3%
Objective-C
3.5%
C++
1.7%
CMake
1.7%
Java
0.8%
Other
1.8%