diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-06-11 21:18:43 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-06-11 21:20:33 -0700 |
commit | feef3ca3c5bc76d2bad1a739966a2143876847cf (patch) | |
tree | c7de193a8dbb007d05de73438ef77c67c3ef1a84 | |
parent | c5285905e1a24a26f0a3977a9732efb6803893d2 (diff) |
call hookMusicFinished when music completes by itself
-rw-r--r-- | src/library_sdl.js | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 00f6e74c..b812fba7 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -1024,8 +1024,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) { @@ -1036,12 +1040,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; }, |