diff --git a/etc/audio.c b/etc/audio.c index 12728c5..38b594d 100644 --- a/etc/audio.c +++ b/etc/audio.c @@ -5,31 +5,35 @@ static unsigned int wav_length; /* length of our sample */ static unsigned char* wav_buffer; /* buffer containing our audio file */ static SDL_AudioSpec wav_spec; static SDL_AudioDeviceID device_id = 0; +static int cat_audio_playing = 0; -void queue(char* file) +void cat_stop_audio(void) { + SDL_PauseAudioDevice(device_id, 1); + SDL_CloseAudioDevice(device_id); + SDL_FreeWAV(wav_buffer); + cat_audio_playing = 0; + /*SDL_Quit();*/ +} + +void cat_play_wav(char* file) { + if (cat_audio_playing) cat_stop_audio(); + cat_audio_playing = 1; if (SDL_LoadWAV(file, &wav_spec, &wav_buffer, &wav_length) == NULL) { printf("file is null!!\n"); return; } device_id = SDL_OpenAudioDevice(NULL, 0, &wav_spec, NULL, 0); SDL_QueueAudio(device_id, wav_buffer, wav_length); + SDL_PauseAudioDevice(device_id, 0); } - -void close_audio(void) { - SDL_CloseAudioDevice(device_id); - SDL_FreeWAV(wav_buffer); - SDL_Quit(); -} - - int main(int argc, char** argv) { SDL_Init(SDL_INIT_EVERYTHING); - queue("etc/example.wav"); - SDL_PauseAudioDevice(device_id, 0); - SDL_Delay(3000); - close_audio(); + cat_play_wav("etc/example.wav"); + SDL_Delay(300); + cat_stop_audio(); + fgetc(stdin); return 0; } diff --git a/etc/example.wav b/etc/example.wav index 56de6de..2f033ad 100644 Binary files a/etc/example.wav and b/etc/example.wav differ