From 49bd8d2d27912067f4a3121e32b929fab4fcd608 Mon Sep 17 00:00:00 2001 From: Tony <45124675+sonninnos@users.noreply.github.com> Date: Wed, 16 Jun 2021 16:35:20 +0300 Subject: [PATCH] (XAudio+DSound) Fail instead of crash (#12527) --- audio/drivers/dsound.c | 3 ++- audio/drivers/xaudio.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/audio/drivers/dsound.c b/audio/drivers/dsound.c index d07a97082d..98a5057aed 100644 --- a/audio/drivers/dsound.c +++ b/audio/drivers/dsound.c @@ -546,7 +546,8 @@ static ssize_t dsound_write(void *data, const void *buf_, size_t size) break; if (avail == 0) - WaitForSingleObject(ds->event, INFINITE); + if (!(WaitForSingleObject(ds->event, 50) == WAIT_OBJECT_0)) + return -1; } } diff --git a/audio/drivers/xaudio.c b/audio/drivers/xaudio.c index 76e1ccb374..e9f7f8bb96 100644 --- a/audio/drivers/xaudio.c +++ b/audio/drivers/xaudio.c @@ -371,7 +371,8 @@ static ssize_t xa_write(void *data, const void *buf, size_t size) XAUDIO2_BUFFER xa2buffer; while (handle->buffers == MAX_BUFFERS - 1) - WaitForSingleObject(handle->hEvent, INFINITE); + if (!(WaitForSingleObject(handle->hEvent, 50) == WAIT_OBJECT_0)) + return -1; xa2buffer.Flags = 0; xa2buffer.AudioBytes = handle->bufsize;