From b2b548a1fc4dcb3b96bd87d830dff3342ec368a9 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 18 Sep 2023 20:55:28 -0700
Subject: [PATCH] Don't hang if IAudioRenderClient_GetBuffer() fails
indefinitely
---
src/audio/wasapi/SDL_wasapi.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/audio/wasapi/SDL_wasapi.c b/src/audio/wasapi/SDL_wasapi.c
index 3e56e4e082d4..6e442c42829f 100644
--- a/src/audio/wasapi/SDL_wasapi.c
+++ b/src/audio/wasapi/SDL_wasapi.c
@@ -403,11 +403,10 @@ static Uint8 *WASAPI_GetDeviceBuf(SDL_AudioDevice *device, int *buffer_size)
// get an endpoint buffer from WASAPI.
BYTE *buffer = NULL;
- while (RecoverWasapiIfLost(device) && device->hidden->render) {
- if (!WasapiFailed(device, IAudioRenderClient_GetBuffer(device->hidden->render, device->sample_frames, &buffer))) {
- return (Uint8 *)buffer;
+ if (RecoverWasapiIfLost(device) && device->hidden->render) {
+ if (WasapiFailed(device, IAudioRenderClient_GetBuffer(device->hidden->render, device->sample_frames, &buffer))) {
+ SDL_assert(buffer == NULL);
}
- SDL_assert(buffer == NULL);
}
return (Uint8 *)buffer;