From 8b3d1fc3b8e9e76f58001051e8d72c8e17152657 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 11 Jul 2013 23:53:00 -0400 Subject: [PATCH] Explicitly write silence to the audio device while it is paused. This is what SDL 1.2 did; we'll do this properly (add a method for the target driver to pause) when I rewrite all this code after the official 2.0 release. Fixes Bugzilla #1857. --- src/audio/SDL_audio.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index 9f22d09c1..f5d930fb8 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -461,6 +461,7 @@ SDL_RunAudio(void *devicep) } } else { /* Otherwise, do not use the streamer. This is the old code. */ + const int silence = (int) device->spec.silence; /* Loop, filling the audio buffers */ while (device->enabled) { @@ -484,9 +485,13 @@ SDL_RunAudio(void *devicep) } } - SDL_LockMutex(device->mixer_lock); - (*fill) (udata, stream, stream_len); - SDL_UnlockMutex(device->mixer_lock); + if (device->paused) { + SDL_memset(stream, silence, stream_len); + } else { + SDL_LockMutex(device->mixer_lock); + (*fill) (udata, stream, stream_len); + SDL_UnlockMutex(device->mixer_lock); + } /* Convert the audio if necessary */ if (device->convert.needed) {