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.
This commit is contained in:
parent
a5362aa7e7
commit
37c7e9ad24
1 changed files with 8 additions and 3 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue