From 8de0afc9c27afb328cb78bfdad8eda3bef66871c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 11 Feb 2004 07:26:29 +0000 Subject: [PATCH] Simplify code and clean up Valgrind warning --- src/audio/SDL_audio.c | 44 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index 51ed18c54..f46cbeff4 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -461,35 +461,29 @@ int SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained) } /* See if we need to do any conversion */ - if ( memcmp(desired, &audio->spec, sizeof(audio->spec)) == 0 ) { - /* Just copy over the desired audio specification */ - if ( obtained != NULL ) { - memcpy(obtained, &audio->spec, sizeof(audio->spec)); + if ( obtained != NULL ) { + memcpy(obtained, &audio->spec, sizeof(audio->spec)); + } else if ( desired->freq != audio->spec.freq || + desired->format != audio->spec.format || + desired->channels != audio->spec.channels ) { + /* Build an audio conversion block */ + if ( SDL_BuildAudioCVT(&audio->convert, + desired->format, desired->channels, + desired->freq, + audio->spec.format, audio->spec.channels, + audio->spec.freq) < 0 ) { + SDL_CloseAudio(); + return(-1); } - } else { - /* Copy over the audio specification if possible */ - if ( obtained != NULL ) { - memcpy(obtained, &audio->spec, sizeof(audio->spec)); - } else { - /* Build an audio conversion block */ - if ( SDL_BuildAudioCVT(&audio->convert, - desired->format, desired->channels, - desired->freq, - audio->spec.format, audio->spec.channels, - audio->spec.freq) < 0 ) { + if ( audio->convert.needed ) { + audio->convert.len = desired->size; + audio->convert.buf =(Uint8 *)SDL_AllocAudioMem( + audio->convert.len*audio->convert.len_mult); + if ( audio->convert.buf == NULL ) { SDL_CloseAudio(); + SDL_OutOfMemory(); return(-1); } - if ( audio->convert.needed ) { - audio->convert.len = desired->size; - audio->convert.buf =(Uint8 *)SDL_AllocAudioMem( - audio->convert.len*audio->convert.len_mult); - if ( audio->convert.buf == NULL ) { - SDL_CloseAudio(); - SDL_OutOfMemory(); - return(-1); - } - } } }