瀏覽代碼

emscriptenaudio: don't forget to finalize the audio thread

Ryan C. Gordon 2 年之前
父節點
當前提交
fc7ed18ca1
共有 1 個文件被更改,包括 9 次插入5 次删除
  1. 9 5
      src/audio/emscripten/SDL_emscriptenaudio.c

+ 9 - 5
src/audio/emscripten/SDL_emscriptenaudio.c

@@ -99,6 +99,10 @@ static void HandleCaptureProcess(SDL_AudioDevice *device)  // this fires when th
 
 
 static void EMSCRIPTENAUDIO_CloseDevice(SDL_AudioDevice *device)
 static void EMSCRIPTENAUDIO_CloseDevice(SDL_AudioDevice *device)
 {
 {
+    if (!device->hidden) {
+        return;
+    }
+
     MAIN_THREAD_EM_ASM({
     MAIN_THREAD_EM_ASM({
         var SDL3 = Module['SDL3'];
         var SDL3 = Module['SDL3'];
         if ($0) {
         if ($0) {
@@ -138,11 +142,11 @@ static void EMSCRIPTENAUDIO_CloseDevice(SDL_AudioDevice *device)
         }
         }
     }, device->iscapture);
     }, device->iscapture);
 
 
-    if (!device->hidden) {
-        SDL_free(device->hidden->mixbuf);
-        SDL_free(device->hidden);
-        device->hidden = NULL;
-    }
+    SDL_free(device->hidden->mixbuf);
+    SDL_free(device->hidden);
+    device->hidden = NULL;
+
+    SDL_AudioThreadFinalize(device);
 }
 }
 
 
 EM_JS_DEPS(sdlaudio, "$autoResumeAudioContext,$dynCall");
 EM_JS_DEPS(sdlaudio, "$autoResumeAudioContext,$dynCall");