Fixed infinite recursion if the WASAPI audio device couldn't be recovered
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
diff --git a/src/audio/wasapi/SDL_wasapi.c b/src/audio/wasapi/SDL_wasapi.c
index 461904a..6af22ce 100644
--- a/src/audio/wasapi/SDL_wasapi.c
+++ b/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