diff options
author | Michael Bishop <mbtyke@gmail.com> | 2013-03-08 18:03:12 -0500 |
---|---|---|
committer | Michael Bishop <mbtyke@gmail.com> | 2013-03-08 18:03:12 -0500 |
commit | 81cdeaa3766e34acfb2f5cbaa25cf71d7d761bcc (patch) | |
tree | 36472b14ab9dd27e499c3871f1a5a152f3a6b0eb | |
parent | 404380d16573f326cd04363dd926cdd303662dc6 (diff) |
Added test and fixed bugs exposed by the test.
-rw-r--r-- | src/library_sdl.js | 40 | ||||
-rw-r--r-- | tests/sdl_audio_mix.c | 12 |
2 files changed, 31 insertions, 21 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index a7a59a89..3dbb9a33 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1333,10 +1333,10 @@ var LibrarySDL = { // If the user asks us to allocate a channel automatically, get the first // free one. if (channel == -1) { - channel = 0; - for (var i = 0; i < SDL.numChannels; i++) { + channel = SDL.channelMinimumNumber; + for (var i = SDL.channelMinimumNumber; i < SDL.numChannels; i++) { if (!SDL.channels[i].audio) { - channel = [Math.max(i, SDL.channelMinimumNumber)]; + channel = i; break; } } @@ -1406,6 +1406,7 @@ var LibrarySDL = { audio.play(); } audio.volume = channelInfo.volume; + audio.paused = false; return channel; }, Mix_PlayChannelTimed: 'Mix_PlayChannel', // XXX ignore Timing @@ -1496,44 +1497,45 @@ var LibrarySDL = { // http://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer_38.html#SEC38 // "Note: Does not check if the channel has been paused." - Mix_Playing: function(id) { - if (id === -1) { + Mix_Playing: function(channel) { + if (channel === -1) { var count = 0; - for (var i = 0; i < SDL.audios.length; i++) { + for (var i = 0; i < SDL.channels.length; i++) { count += _Mix_Playing(i); } return count; } - var info = SDL.audios[id]; + var info = SDL.channels[channel]; if (info && info.audio && !info.audio.paused) { return 1; } return 0; }, - Mix_Pause: function(id) { - if (id === -1) { - for (var i = 0; i<SDL.audios.length;i++) { + Mix_Pause: function(channel) { + if (channel === -1) { + for (var i = 0; i<SDL.channels.length;i++) { _Mix_Pause(i); } return; } - var info = SDL.audios[id]; + var info = SDL.channels[channel]; if (info && info.audio) { info.audio.pause(); + info.audio.paused = true; } }, // http://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer_39.html#SEC39 - Mix_Paused: function(id) { - if (id === -1) { + Mix_Paused: function(channel) { + if (channel === -1) { var pausedCount = 0; - for (var i = 0; i<SDL.audios.length;i++) { + for (var i = 0; i<SDL.channels.length;i++) { pausedCount += _Mix_Paused(i); } return pausedCount; } - var info = SDL.audios[id]; + var info = SDL.channels[channel]; if (info && info.audio && info.audio.paused) { return 1; } @@ -1545,14 +1547,14 @@ var LibrarySDL = { }, // http://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer_33.html#SEC33 - Mix_Resume: function(id) { - if (id === -1) { - for (var i = 0; i<SDL.audios.length;i++) { + Mix_Resume: function(channel) { + if (channel === -1) { + for (var i = 0; i<SDL.channels.length;i++) { _Mix_Resume(i); } return; } - var info = SDL.audios[id]; + var info = SDL.channels[channel]; if (info && info.audio) { info.audio.play(); } diff --git a/tests/sdl_audio_mix.c b/tests/sdl_audio_mix.c index 6866f555..e3431e0c 100644 --- a/tests/sdl_audio_mix.c +++ b/tests/sdl_audio_mix.c @@ -17,9 +17,11 @@ void one_iter() { switch( frames ) { case 1: soundChannel = Mix_PlayChannel(-1, sound, 0); - assert(soundChannel != -1); + 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: @@ -54,7 +56,13 @@ void one_iter() { 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); |