aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/library.js4
-rw-r--r--src/library_sdl.js14
-rw-r--r--src/preamble.js3
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 ===