diff options
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r-- | src/library_sdl.js | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 7011e679..6250d6e3 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -934,7 +934,7 @@ var LibrarySDL = { // Convert the path to relative filename = filename.substr(1); } - var raw = preloadedImages[filename]; + var raw = Module["preloadedImages"][filename]; if (!raw) { Runtime.warnOnce('Cannot find preloaded image ' + filename); return 0; @@ -1058,7 +1058,7 @@ var LibrarySDL = { Mix_LoadWAV_RW: function(filename, freesrc) { filename = FS.standardizePath(Pointer_stringify(filename)); - var raw = preloadedAudios[filename]; + var raw = Module["preloadedAudios"][filename]; if (!raw) { Runtime.warnOnce('Cannot find preloaded audio ' + filename); return 0; @@ -1117,8 +1117,12 @@ var LibrarySDL = { return 0; }, + Mix_HookMusicFinished__deps: ['Mix_HaltMusic'], Mix_HookMusicFinished: function(func) { SDL.hookMusicFinished = func; + if (SDL.music) { // ensure the callback will be called, if a music is already playing + SDL.music['onended'] = _Mix_HaltMusic; + } }, Mix_VolumeMusic: function(func) { @@ -1129,12 +1133,14 @@ var LibrarySDL = { Mix_FreeMusic: 'Mix_FreeChunk', + Mix_PlayMusic__deps: ['Mix_HaltMusic'], Mix_PlayMusic: function(id, loops) { loops = Math.max(loops, 1); var audio = SDL.audios[id].audio; if (!audio) return 0; audio.loop = loops != 1; // TODO: handle N loops for finite N audio.play(); + audio['onended'] = _Mix_HaltMusic; // will send callback SDL.music = audio; return 0; }, @@ -1169,6 +1175,14 @@ var LibrarySDL = { Mix_FadeOutMusic: 'Mix_HaltMusic', // XXX ignore fading out effect + Mix_PlayingMusic: function() { + return (SDL.music && !SDL.music.paused) ? 1 : 0; + }, + + Mix_PausedMusic: function() { + return (SDL.music && SDL.music.paused) ? 1 : 0; + }, + // SDL TTF TTF_Init: function() { return 0 }, |