Procházet zdrojové kódy

Fixed infinite recursion if the WASAPI audio device couldn't be recovered

Sam Lantinga před 7 roky
rodič
revize
4a734209a3
1 změnil soubory, kde provedl 14 přidání a 16 odebrání
  1. 14 16
      src/audio/wasapi/SDL_wasapi.c

+ 14 - 16
src/audio/wasapi/SDL_wasapi.c

@@ -605,24 +605,22 @@ WASAPI_CaptureFromDevice(_THIS, void *buffer, int buflen)
 static void
 WASAPI_FlushCapture(_THIS)
 {
-    if (RecoverWasapiIfLost(this)) {
-        BYTE *ptr = NULL;
-        UINT32 frames = 0;
-        DWORD flags = 0;
-
-        /* just read until we stop getting packets, throwing them away. */
-        while (SDL_TRUE) {
-            const HRESULT ret = IAudioCaptureClient_GetBuffer(this->hidden->capture, &ptr, &frames, &flags, NULL, NULL);
-            if (ret == AUDCLNT_S_BUFFER_EMPTY) {
-                break;  /* no more buffered data; we're done. */
-            } else if (WasapiFailed(this, ret)) {
-                break;  /* failed for some other reason, abort. */
-            } else if (WasapiFailed(this, IAudioCaptureClient_ReleaseBuffer(this->hidden->capture, frames))) {
-                break;  /* something broke. */
-            }
+    BYTE *ptr = NULL;
+    UINT32 frames = 0;
+    DWORD flags = 0;
+
+    /* just read until we stop getting packets, throwing them away. */
+    while (SDL_TRUE) {
+        const HRESULT ret = IAudioCaptureClient_GetBuffer(this->hidden->capture, &ptr, &frames, &flags, NULL, NULL);
+        if (ret == AUDCLNT_S_BUFFER_EMPTY) {
+            break;  /* no more buffered data; we're done. */
+        } else if (WasapiFailed(this, ret)) {
+            break;  /* failed for some other reason, abort. */
+        } else if (WasapiFailed(this, IAudioCaptureClient_ReleaseBuffer(this->hidden->capture, frames))) {
+            break;  /* something broke. */
         }
-        SDL_AudioStreamClear(this->hidden->capturestream);
     }
+    SDL_AudioStreamClear(this->hidden->capturestream);
 }
 
 static void