Commit 6bd1ec6bb0008c71b2e9f138687214b8b6739a60

Ryan C. Gordon 2016-08-02T15:04:33

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);