diff options
Diffstat (limited to 'tests/sdl_audio_mix.c')
-rw-r--r-- | tests/sdl_audio_mix.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/sdl_audio_mix.c b/tests/sdl_audio_mix.c new file mode 100644 index 00000000..e3431e0c --- /dev/null +++ b/tests/sdl_audio_mix.c @@ -0,0 +1,83 @@ +#include <stdio.h> +#include <SDL/SDL.h> +#include <SDL/SDL_mixer.h> +#include <assert.h> +#include <emscripten.h> + +static Mix_Chunk *sound = NULL; +static Mix_Music *music = NULL; + +static int soundChannel = 0; + +void one_iter(); +void one_iter() { + static int frames = 0; + frames++; + + switch( frames ) { + case 1: + soundChannel = Mix_PlayChannel(-1, sound, 0); + printf("channel = %d", soundChannel); + assert(soundChannel != -1 && soundChannel != 0); + break; + case 2: + printf("channel %d is playing = %d", soundChannel, Mix_Playing(soundChannel)); + assert(Mix_Playing(soundChannel)); + break; + case 30: + Mix_Pause(soundChannel); + Mix_PlayMusic(music, 1); + break; + case 31: + assert(Mix_Paused(soundChannel)); + assert(Mix_PlayingMusic()); + break; + case 60: + Mix_Resume(soundChannel); + Mix_PauseMusic(); + break; + case 61: + assert(Mix_Playing(soundChannel)); + assert(Mix_PausedMusic()); + break; + case 90: + Mix_ResumeMusic(); + break; + case 91: + assert(Mix_PlayingMusic()); + break; + case 120: + Mix_HaltChannel(soundChannel); + Mix_HaltMusic(); + break; + }; +} + + +int main(int argc, char **argv) { + SDL_Init(SDL_INIT_AUDIO); + Mix_Init(MIX_INIT_OGG); + + // This reserves channel 0 for other purposes. + // We are just going to verify that we are not + // allocated channel 0 when we call Mix_PlayChannel(-1, ...) + Mix_ReserveChannels(1); + + int ret = Mix_OpenAudio(0, 0, 0, 0); // we ignore all these.. + assert(ret == 0); + + sound = Mix_LoadWAV("sound.ogg"); + assert(sound); + music = Mix_LoadMUS("music.ogg"); + assert(music); + + emscripten_set_main_loop(one_iter, 30, 0); + + // force a quit + while(Mix_Init(0)) + Mix_Quit(); + Mix_CloseAudio(); + + return 0; +} + |