diff options
-rw-r--r-- | src/audio.c | 18 | ||||
-rw-r--r-- | src/audioOutput.c | 5 |
2 files changed, 8 insertions, 15 deletions
diff --git a/src/audio.c b/src/audio.c index 77fe9c25b..446eff40e 100644 --- a/src/audio.c +++ b/src/audio.c @@ -136,18 +136,15 @@ void finishAudioDriver() { } int isCurrentAudioFormat(AudioFormat * audioFormat) { - if(!aoOutput || !audioFormat) return 0; + if(!audioFormat) return 0; if(memcmp(audioFormat,&audio_format,sizeof(AudioFormat)) != 0) return 0; + return 1; } int openAudioDevice(AudioFormat * audioFormat) { - if(aoOutput->open && !isCurrentAudioFormat(audioFormat)) { - closeAudioOutput(aoOutput); - } - - if(!aoOutput->open) { + if(!aoOutput->open || !isCurrentAudioFormat(audioFormat)) { return openAudioOutput(aoOutput, audioFormat); } @@ -155,11 +152,6 @@ int openAudioDevice(AudioFormat * audioFormat) { } int playAudio(char * playChunk, int size) { - if(!aoOutput->open) { - ERROR("trying to play w/o the audio device being open!\n"); - return -1; - } - return playAudioOutput(aoOutput, playChunk, size); } @@ -168,7 +160,5 @@ int isAudioDeviceOpen() { } void closeAudioDevice() { - if(aoOutput->open) { - closeAudioOutput(aoOutput); - } + closeAudioOutput(aoOutput); } diff --git a/src/audioOutput.c b/src/audioOutput.c index 1165f247e..5352be012 100644 --- a/src/audioOutput.c +++ b/src/audioOutput.c @@ -41,18 +41,21 @@ AudioOutput * newAudioOutput(char * name) { } int openAudioOutput(AudioOutput * audioOutput, AudioFormat * audioFormat) { + if(audioOutput->open) closeAudioOutput(audioOutput); return audioOutput->openDeviceFunc(audioOutput, audioFormat); } int playAudioOutput(AudioOutput * audioOutput, char * playChunk, int size) { + if(!audioOutput->open) return -1; return audioOutput->playFunc(audioOutput, playChunk, size); } void closeAudioOutput(AudioOutput * audioOutput) { - audioOutput->closeDeviceFunc(audioOutput); + if(audioOutput->open) audioOutput->closeDeviceFunc(audioOutput); } void finishAudioOutput(AudioOutput * audioOutput) { + closeAudioOutput(audioOutput); audioOutput->finishDriverFunc(audioOutput); free(audioOutput); } |