From 554037a6f7a1dfb20562c1986218843f19aa957f Mon Sep 17 00:00:00 2001 From: Manuel V?gele Date: Sat, 26 Sep 2020 09:30:08 +0200 Subject: [PATCH] audio: fix popping sounds caused by signed/unsigned conversion When converting audio from signed to unsigned values of vice-versa the silence value chosen by SDL was the value of the device, not of the stream that the data was being put into. After conversion this would lead to a very high or low value, making the speaker jump to a extreme positon, leading to an audible noise whenever creating, destroying or playing scilence on a device that reqired such conversion. --- src/audio/SDL_audio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index bacee6c90..16d29f9f2 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -577,7 +577,7 @@ SDL_BufferQueueDrainCallback(void *userdata, Uint8 *stream, int len) if (len > 0) { /* fill any remaining space in the stream with silence. */ SDL_assert(SDL_CountDataQueue(device->buffer_queue) == 0); - SDL_memset(stream, device->spec.silence, len); + SDL_memset(stream, device->callbackspec.silence, len); } } @@ -733,7 +733,7 @@ SDL_RunAudio(void *devicep) /* !!! FIXME: this should be LockDevice. */ SDL_LockMutex(device->mixer_lock); if (SDL_AtomicGet(&device->paused)) { - SDL_memset(data, device->spec.silence, data_len); + SDL_memset(data, device->callbackspec.silence, data_len); } else { callback(udata, data, data_len); }