mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-04-02 05:39:20 +00:00
pulseaudio: Fix deadlock in HotplugThread.
If we wait for context subscription to finish, we might miss the signal telling us to terminate the thread...this can happen if an app initializes the audio subsystem and then quits immediately. So just go right into the main loop of the thread; the subscription will finish when it finishes and then events will flow.
This commit is contained in:
@@ -865,7 +865,7 @@ static int SDLCALL HotplugThread(void *data)
|
||||
SDL_SetThreadPriority(SDL_THREAD_PRIORITY_LOW);
|
||||
PULSEAUDIO_pa_threaded_mainloop_lock(pulseaudio_threaded_mainloop);
|
||||
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));
|
||||
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)) {
|
||||
PULSEAUDIO_pa_threaded_mainloop_wait(pulseaudio_threaded_mainloop);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user