From b2b548a1fc4dcb3b96bd87d830dff3342ec368a9 Mon Sep 17 00:00:00 2001 From: Sam Lantinga 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 3e56e4e082..6e442c4282 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;