From 10fab3a39e2bd163cc45147b6afd517501801002 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Wed, 11 Oct 2023 14:31:37 -0400
Subject: [PATCH] pulseaudio: Stop the threaded mainloop before destroying the
context.
Otherwise, we might trigger an assertion in libpulse.
Reference Issue #8348.
---
src/audio/pulseaudio/SDL_pulseaudio.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/audio/pulseaudio/SDL_pulseaudio.c b/src/audio/pulseaudio/SDL_pulseaudio.c
index a554fcd322d7..1ab099baa020 100644
--- a/src/audio/pulseaudio/SDL_pulseaudio.c
+++ b/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;
}