From 6abd242b935ce6ad94b05be7c498bde91f3c940b Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 14 Feb 2015 00:16:27 +0100 Subject: [PATCH] Emscripten: Fixed throwing JavaScript exception if no audio context available. Handling the error in C provides the possibility to just continue without audio. --- src/audio/emscripten/SDL_emscriptenaudio.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/audio/emscripten/SDL_emscriptenaudio.c b/src/audio/emscripten/SDL_emscriptenaudio.c index d9334daec..f1ae929f3 100644 --- a/src/audio/emscripten/SDL_emscriptenaudio.c +++ b/src/audio/emscripten/SDL_emscriptenaudio.c @@ -157,6 +157,7 @@ Emscripten_OpenDevice(_THIS, const char *devname, int iscapture) SDL_AudioFormat test_format = SDL_FirstAudioFormat(this->spec.format); int i; float f; + int result; while ((!valid_format) && (test_format)) { switch (test_format) { @@ -185,7 +186,7 @@ Emscripten_OpenDevice(_THIS, const char *devname, int iscapture) /* based on parts of library_sdl.js */ /* create context (TODO: this puts stuff in the global namespace...)*/ - EM_ASM({ + result = EM_ASM_INT_V({ if(typeof(SDL2) === 'undefined') SDL2 = {}; @@ -198,10 +199,14 @@ Emscripten_OpenDevice(_THIS, const char *devname, int iscapture) } else if (typeof(webkitAudioContext) !== 'undefined') { SDL2.audioContext = new webkitAudioContext(); } else { - throw 'Web Audio API is not available!'; + return -1; } } + return 0; }); + if (result < 0) { + return SDL_SetError("Web Audio API is not available!"); + } /* limit to native freq */ int sampleRate = EM_ASM_INT_V({