Skip to content

Commit

Permalink
Emscripten: Fixed throwing JavaScript exception if no audio context a…
Browse files Browse the repository at this point in the history
…vailable.

Handling the error in C provides the possibility to just continue without audio.
  • Loading branch information
philippwiesemann committed Feb 13, 2015
1 parent c5179c6 commit 6abd242
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/audio/emscripten/SDL_emscriptenaudio.c
Expand Up @@ -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) {
Expand Down Expand Up @@ -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 = {};

Expand All @@ -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({
Expand Down

0 comments on commit 6abd242

Please sign in to comment.