aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/audio.c18
-rw-r--r--src/audioOutput.c5
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);
}