From a806a9092bce64665c25b28e5ebdf1b99a376f44 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Tue, 10 Feb 2026 09:24:34 -0500
Subject: [PATCH] wasapi: stop infinite loop in audio thread when recording
device is unplugged.
---
src/audio/wasapi/SDL_wasapi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/audio/wasapi/SDL_wasapi.c b/src/audio/wasapi/SDL_wasapi.c
index 2fb699834ec54..1c4b77e055622 100644
--- a/src/audio/wasapi/SDL_wasapi.c
+++ b/src/audio/wasapi/SDL_wasapi.c
@@ -592,7 +592,7 @@ static int WASAPI_RecordDevice(SDL_AudioDevice *device, void *buffer, int buflen
UINT32 frames = 0;
DWORD flags = 0;
- while (device->hidden->capture) {
+ while (device->hidden->capture && !SDL_GetAtomicInt(&device->hidden->device_disconnecting))
const HRESULT ret = IAudioCaptureClient_GetBuffer(device->hidden->capture, &ptr, &frames, &flags, NULL, NULL);
if (ret == AUDCLNT_S_BUFFER_EMPTY) {
return 0; // in theory we should have waited until there was data, but oh well, we'll go back to waiting. Returning 0 is safe in SDL3.