diff options
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r-- | src/library_sdl.js | 51 |
1 files changed, 28 insertions, 23 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 5033b27e..3dbb9a33 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1235,6 +1235,7 @@ var LibrarySDL = { Mix_Init: function(flags) { if (!flags) return 0; + SDL.channelMinimumNumber = 0; return 8; /* MIX_INIT_OGG */ }, Mix_Quit: function(){}, @@ -1317,7 +1318,9 @@ var LibrarySDL = { Mix_FreeChunk: function(id) { SDL.audios[id] = null; }, - + Mix_ReserveChannels: function(num) { + SDL.channelMinimumNumber = num; + }, Mix_PlayChannel: function(channel, id, loops) { // TODO: handle loops @@ -1330,8 +1333,8 @@ 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 = i; break; @@ -1403,6 +1406,7 @@ var LibrarySDL = { audio.play(); } audio.volume = channelInfo.volume; + audio.paused = false; return channel; }, Mix_PlayChannelTimed: 'Mix_PlayChannel', // XXX ignore Timing @@ -1493,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++) { - count += SDL.Mix_Playing(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++) { - SDL.Mix_Pause(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++) { - pausedCount += SDL.Mix_Paused(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; } @@ -1542,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++) { - SDL.Mix_Resume(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(); } |