From e6640ef2d46a1baa34b4d893df661d17f0070b76 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 30 Sep 2022 14:53:07 -0400 Subject: [PATCH] coreaudio: Possibly fixed another shutdown race condition. Reference Issue #6159. --- src/audio/coreaudio/SDL_coreaudio.m | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/audio/coreaudio/SDL_coreaudio.m b/src/audio/coreaudio/SDL_coreaudio.m index 1a6871904..63ce6a5d3 100644 --- a/src/audio/coreaudio/SDL_coreaudio.m +++ b/src/audio/coreaudio/SDL_coreaudio.m @@ -701,6 +701,14 @@ COREAUDIO_CloseDevice(_THIS) } #endif + /* if callback fires again, feed silence; don't call into the app. */ + SDL_AtomicSet(&this->paused, 1); + + if (this->hidden->thread) { + SDL_assert(SDL_AtomicGet(&this->shutdown) != 0); /* should have been set by SDL_audio.c */ + SDL_WaitThread(this->hidden->thread, NULL); + } + if (iscapture) { open_capture_devices--; } else { @@ -725,18 +733,10 @@ COREAUDIO_CloseDevice(_THIS) open_devices = NULL; } - /* if callback fires again, feed silence; don't call into the app. */ - SDL_AtomicSet(&this->paused, 1); - if (this->hidden->audioQueue) { AudioQueueDispose(this->hidden->audioQueue, 1); } - if (this->hidden->thread) { - SDL_assert(SDL_AtomicGet(&this->shutdown) != 0); /* should have been set by SDL_audio.c */ - SDL_WaitThread(this->hidden->thread, NULL); - } - if (this->hidden->ready_semaphore) { SDL_DestroySemaphore(this->hidden->ready_semaphore); }