audio: a little more robustness in the capture device's thread.
diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c
index b8b045a..e55923f 100644
--- a/src/audio/SDL_audio.c
+++ b/src/audio/SDL_audio.c
@@ -729,7 +729,6 @@ SDL_CaptureAudio(void *devicep)
while (still_need > 0) {
const int rc = current_audio.impl.CaptureFromDevice(device, ptr, still_need);
- SDL_assert(rc != 0); /* device should have blocked, failed, or returned data. */
SDL_assert(rc <= still_need); /* device should not overflow buffer. :) */
if (rc > 0) {
still_need -= rc;
@@ -751,7 +750,9 @@ SDL_CaptureAudio(void *devicep)
/* !!! FIXME: this should be LockDevice. */
SDL_LockMutex(device->mixer_lock);
- if (!SDL_AtomicGet(&device->paused)) {
+ if (SDL_AtomicGet(&device->paused)) {
+ current_audio.impl.FlushCapture(device); /* one snuck in! */
+ } else {
(*callback)(udata, stream, stream_len);
}
SDL_UnlockMutex(device->mixer_lock);