Fix crash on CloseAudioDevice: uninit device before mutex (#6039)

On Android (AAudio) the callback thread could still run when the mutex was
destroyed, causing a SIGABRT (pthread_mutex_lock on a destroyed mutex).
Uninit the device first so its callback thread stops before ma_mutex_uninit.
This commit is contained in:
Carlos Serrano 2026-08-07 22:44:06 +02:00 • committed by GitHub
commit 1893226cb7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -533,8 +533,9 @@ void CloseAudioDevice(void)
{ {
if (AUDIO.System.isReady) if (AUDIO.System.isReady)
{ {
ma_mutex_uninit(&AUDIO.System.lock); // Stop the device first (joins the callback thread) before destroying the mutex it locks
ma_device_uninit(&AUDIO.System.device); ma_device_uninit(&AUDIO.System.device);
ma_mutex_uninit(&AUDIO.System.lock);
ma_context_uninit(&AUDIO.System.context); ma_context_uninit(&AUDIO.System.context);
AUDIO.System.isReady = false; AUDIO.System.isReady = false;