Browse Source

pulseaudio: Stop the threaded mainloop before destroying the context.

Otherwise, we might trigger an assertion in libpulse.

Reference Issue #8348.
Ryan C. Gordon 1 year ago
parent
commit
10fab3a39e
1 changed files with 3 additions and 1 deletions
  1. 3 1
      src/audio/pulseaudio/SDL_pulseaudio.c

+ 3 - 1
src/audio/pulseaudio/SDL_pulseaudio.c

@@ -307,13 +307,15 @@ static void WaitForPulseOperation(pa_operation *o)
 
 static void DisconnectFromPulseServer(void)
 {
+    if (pulseaudio_threaded_mainloop != NULL) {
+        PULSEAUDIO_pa_threaded_mainloop_stop(pulseaudio_threaded_mainloop);
+    }
     if (pulseaudio_context) {
         PULSEAUDIO_pa_context_disconnect(pulseaudio_context);
         PULSEAUDIO_pa_context_unref(pulseaudio_context);
         pulseaudio_context = NULL;
     }
     if (pulseaudio_threaded_mainloop != NULL) {
-        PULSEAUDIO_pa_threaded_mainloop_stop(pulseaudio_threaded_mainloop);
         PULSEAUDIO_pa_threaded_mainloop_free(pulseaudio_threaded_mainloop);
         pulseaudio_threaded_mainloop = NULL;
     }