From a3b658ba9989eab25369e36087fbbdf559dd53a8 Mon Sep 17 00:00:00 2001 From: Patrice Mandin Date: Sat, 29 Jan 2005 09:58:40 +0000 Subject: [PATCH] clear convert.buf before filling it --- src/audio/mint/SDL_mintaudio.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/audio/mint/SDL_mintaudio.c b/src/audio/mint/SDL_mintaudio.c index 2a065af11..f8b2b597f 100644 --- a/src/audio/mint/SDL_mintaudio.c +++ b/src/audio/mint/SDL_mintaudio.c @@ -49,19 +49,29 @@ cookie_stfa_t *SDL_MintAudio_stfa; void SDL_MintAudio_Callback(void) { Uint8 *buffer; + SDL_AudioDevice *audio = SDL_MintAudio_device; buffer = SDL_MintAudio_audiobuf[SDL_MintAudio_numbuf]; - memset(buffer, SDL_MintAudio_device->spec.silence, SDL_MintAudio_device->spec.size); - - if ( ! SDL_MintAudio_device->paused ) { - if ( SDL_MintAudio_device->convert.needed ) { - SDL_MintAudio_device->spec.callback(SDL_MintAudio_device->spec.userdata, - (Uint8 *)SDL_MintAudio_device->convert.buf,SDL_MintAudio_device->convert.len); - SDL_ConvertAudio(&SDL_MintAudio_device->convert); - memcpy(buffer, SDL_MintAudio_device->convert.buf, SDL_MintAudio_device->convert.len_cvt); + memset(buffer, audio->spec.silence, audio->spec.size); + + if (audio->paused) + return; + + if (audio->convert.needed) { + int silence; + + if ( audio->convert.src_format == AUDIO_U8 ) { + silence = 0x80; } else { - SDL_MintAudio_device->spec.callback(SDL_MintAudio_device->spec.userdata, buffer, SDL_MintAudio_device->spec.size); + silence = 0; } + memset(audio->convert.buf, silence, audio->convert.len); + audio->spec.callback(audio->spec.userdata, + (Uint8 *)audio->convert.buf,audio->convert.len); + SDL_ConvertAudio(&audio->convert); + memcpy(buffer, audio->convert.buf, audio->convert.len_cvt); + } else { + audio->spec.callback(audio->spec.userdata, buffer, audio->spec.size); } }