mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-03-23 21:55:12 +00:00
pulseaudio: don't wait on pa_context_subscribe in hotplug thread.
This risks blocking the thread if disaster ensues, and we can wait in the thread's main loop for subscription as well anywhere else. Reference Issue #7971. (cherry picked from commit 956b18f50cc3794f253b025cca6e5e00c445fd67)
This commit is contained in:
parent
29d461b628
commit
832b524180
|
@ -859,7 +859,10 @@ static int SDLCALL HotplugThread(void *data)
|
||||||
SDL_SetThreadPriority(SDL_THREAD_PRIORITY_LOW);
|
SDL_SetThreadPriority(SDL_THREAD_PRIORITY_LOW);
|
||||||
PULSEAUDIO_pa_threaded_mainloop_lock(pulseaudio_threaded_mainloop);
|
PULSEAUDIO_pa_threaded_mainloop_lock(pulseaudio_threaded_mainloop);
|
||||||
PULSEAUDIO_pa_context_set_subscribe_callback(pulseaudio_context, HotplugCallback, NULL);
|
PULSEAUDIO_pa_context_set_subscribe_callback(pulseaudio_context, HotplugCallback, NULL);
|
||||||
WaitForPulseOperation(PULSEAUDIO_pa_context_subscribe(pulseaudio_context, PA_SUBSCRIPTION_MASK_SINK | PA_SUBSCRIPTION_MASK_SOURCE, NULL, NULL));
|
|
||||||
|
/* don't WaitForPulseOperation on the subscription; when it's done we'll be able to get hotplug events, but waiting doesn't changing anything. */
|
||||||
|
PULSEAUDIO_pa_operation_unref(PULSEAUDIO_pa_context_subscribe(pulseaudio_context, PA_SUBSCRIPTION_MASK_SINK | PA_SUBSCRIPTION_MASK_SOURCE, NULL, NULL));
|
||||||
|
|
||||||
while (SDL_AtomicGet(&pulseaudio_hotplug_thread_active)) {
|
while (SDL_AtomicGet(&pulseaudio_hotplug_thread_active)) {
|
||||||
PULSEAUDIO_pa_threaded_mainloop_wait(pulseaudio_threaded_mainloop);
|
PULSEAUDIO_pa_threaded_mainloop_wait(pulseaudio_threaded_mainloop);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue