diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 4 | ||||
-rw-r--r-- | src/library_sdl.js | 14 | ||||
-rw-r--r-- | src/preamble.js | 3 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js index cd18b566..cb94fccb 100644 --- a/src/library.js +++ b/src/library.js @@ -6203,6 +6203,10 @@ LibraryManager.library = { return eval(Pointer_stringify(ptr)); }, + emscripten_random: function() { + return Math.random(); + }, + $Profiling: { max_: 0, times: null, diff --git a/src/library_sdl.js b/src/library_sdl.js index 826f0201..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; }, @@ -1076,6 +1082,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 }, diff --git a/src/preamble.js b/src/preamble.js index 541b4bb5..ae00b796 100644 --- a/src/preamble.js +++ b/src/preamble.js @@ -326,6 +326,7 @@ function ccall(ident, returnType, argTypes, args) { var stack = 0; function toC(value, type) { if (type == 'string') { + if (value === null || value === undefined || value === 0) return 0; // null string if (!stack) stack = Runtime.stackSave(); var ret = Runtime.stackAlloc(value.length+1); writeStringToMemory(value, ret); @@ -819,6 +820,7 @@ function addRunDependency() { Module['monitorRunDependencies'](runDependencies); } } +Module['addRunDependency'] = addRunDependency; function removeRunDependency() { runDependencies--; if (Module['monitorRunDependencies']) { @@ -826,6 +828,7 @@ function removeRunDependency() { } if (runDependencies == 0) run(); } +Module['removeRunDependency'] = removeRunDependency; // === Body === |