Fixed infinite recursion if the WASAPI audio device couldn't be recovered
parent
f033ce61e1
commit
4a734209a3
|
@ -605,24 +605,22 @@ WASAPI_CaptureFromDevice(_THIS, void *buffer, int buflen)
|
||||||
static void
|
static void
|
||||||
WASAPI_FlushCapture(_THIS)
|
WASAPI_FlushCapture(_THIS)
|
||||||
{
|
{
|
||||||
if (RecoverWasapiIfLost(this)) {
|
BYTE *ptr = NULL;
|
||||||
BYTE *ptr = NULL;
|
UINT32 frames = 0;
|
||||||
UINT32 frames = 0;
|
DWORD flags = 0;
|
||||||
DWORD flags = 0;
|
|
||||||
|
|
||||||
/* just read until we stop getting packets, throwing them away. */
|
/* just read until we stop getting packets, throwing them away. */
|
||||||
while (SDL_TRUE) {
|
while (SDL_TRUE) {
|
||||||
const HRESULT ret = IAudioCaptureClient_GetBuffer(this->hidden->capture, &ptr, &frames, &flags, NULL, NULL);
|
const HRESULT ret = IAudioCaptureClient_GetBuffer(this->hidden->capture, &ptr, &frames, &flags, NULL, NULL);
|
||||||
if (ret == AUDCLNT_S_BUFFER_EMPTY) {
|
if (ret == AUDCLNT_S_BUFFER_EMPTY) {
|
||||||
break; /* no more buffered data; we're done. */
|
break; /* no more buffered data; we're done. */
|
||||||
} else if (WasapiFailed(this, ret)) {
|
} else if (WasapiFailed(this, ret)) {
|
||||||
break; /* failed for some other reason, abort. */
|
break; /* failed for some other reason, abort. */
|
||||||
} else if (WasapiFailed(this, IAudioCaptureClient_ReleaseBuffer(this->hidden->capture, frames))) {
|
} else if (WasapiFailed(this, IAudioCaptureClient_ReleaseBuffer(this->hidden->capture, frames))) {
|
||||||
break; /* something broke. */
|
break; /* something broke. */
|
||||||
}
|
|
||||||
}
|
}
|
||||||
SDL_AudioStreamClear(this->hidden->capturestream);
|
|
||||||
}
|
}
|
||||||
|
SDL_AudioStreamClear(this->hidden->capturestream);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue