coreaudio: Possibly fixed another shutdown race condition.

Reference Issue #6159.
(cherry picked from commit e6640ef2d4)
This commit is contained in:
Ryan C. Gordon authored and Ozkan Sezer committed 2022-10-02 12:22:20 +03:00
1 parent 14bf8237c1
commit b0a2164b2c
1 file changed
+8 -8
+8 -8
View File
@@ -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);
}