@@ -412,7 +412,8 @@ var LibrarySDL = {
412412 } ;
413413
414414#if OFFSCREEN_FRAMEBUFFER
415- // TODO: Make SDL explicitly aware of whether it is being proxied or not, and set these to true only when proxying is being performed.
415+ // TODO: Make SDL explicitly aware of whether it is being proxied or not,
416+ // and set these to true only when proxying is being performed.
416417 GL . enableOffscreenFramebufferAttributes ( webGLContextAttributes ) ;
417418#endif
418419 var ctx = Browser . createContext ( canvas , is_SDL_OPENGL , usePageCanvas , webGLContextAttributes ) ;
@@ -1136,12 +1137,7 @@ var LibrarySDL = {
11361137 } ,
11371138
11381139 setPannerPosition ( info , x , y , z ) {
1139- if ( ! info ) return ;
1140- if ( info . audio ) {
1141- if ( info . audio . webAudioPannerNode ) {
1142- info . audio . webAudioPannerNode [ 'setPosition '] ( x , y , z ) ;
1143- }
1144- }
1140+ info ?. audio ?. webAudioPannerNode ?. [ 'setPosition '] ( x , y , z ) ;
11451141 } ,
11461142
11471143 // Plays out an SDL audio resource that was loaded with the Mix_Load APIs, when using Web Audio..
@@ -1153,7 +1149,9 @@ var LibrarySDL = {
11531149 var webAudio = audio . resource . webAudio ;
11541150 audio . paused = false ;
11551151 if ( ! webAudio . decodedBuffer ) {
1156- if ( webAudio . onDecodeComplete === undefined ) abort ( "Cannot play back audio object that was not loaded" ) ;
1152+ if ( webAudio . onDecodeComplete === undefined ) {
1153+ abort ( "Cannot play back audio object that was not loaded" ) ;
1154+ }
11571155 webAudio . onDecodeComplete . push ( ( ) => { if ( ! audio . paused ) SDL . playWebAudio ( audio ) ; } ) ;
11581156 return ;
11591157 }
@@ -1189,11 +1187,13 @@ var LibrarySDL = {
11891187 if ( ! audio ) return ;
11901188 if ( audio . webAudioNode ) {
11911189 try {
1192- // Remember where we left off, so that if/when we resume, we can restart the playback at a proper place.
1190+ // Remember where we left off, so that if/when we resume, we can
1191+ // restart the playback at a proper place.
11931192 audio . currentPosition = ( SDL . audioContext [ 'currentTime' ] - audio . startTime ) % audio . resource . webAudio . decodedBuffer . duration ;
1194- // Important: When we reach here, the audio playback is stopped by the user. But when calling .stop() below, the Web Audio
1195- // graph will send the onended signal, but we don't want to process that, since pausing should not clear/destroy the audio
1196- // channel.
1193+ // Important: When we reach here, the audio playback is stopped by the
1194+ // user. But when calling .stop() below, the Web Audio graph will send
1195+ // the onended signal, but we don't want to process that, since
1196+ // pausing should not clear/destroy the audio channel.
11971197 audio . webAudioNode [ 'onended' ] = undefined ;
11981198 audio . webAudioNode . stop ( 0 ) ; // 0 is a default parameter, but WebKit is confused by it #3861
11991199 audio . webAudioNode = undefined ;
@@ -1205,20 +1205,27 @@ var LibrarySDL = {
12051205 } ,
12061206
12071207 openAudioContext ( ) {
1208- // Initialize Web Audio API if we haven't done so yet. Note: Only initialize Web Audio context ever once on the web page,
1209- // since initializing multiple times fails on Chrome saying 'audio resources have been exhausted'.
1208+ // Initialize Web Audio API if we haven't done so yet. Note: Only
1209+ // initialize Web Audio context ever once on the web page, since
1210+ // initializing multiple times fails on Chrome saying 'audio resources
1211+ // have been exhausted'.
12101212 if ( ! SDL . audioContext ) {
1211- if ( typeof AudioContext != 'undefined' ) SDL . audioContext = new AudioContext ( ) ;
1212- else if ( typeof webkitAudioContext != 'undefined' ) SDL . audioContext = new webkitAudioContext ( ) ;
1213+ if ( typeof AudioContext != 'undefined ') {
1214+ SDL . audioContext = new AudioContext ( ) ;
1215+ } else if ( typeof webkitAudioContext != 'undefined ') {
1216+ SDL . audioContext = new webkitAudioContext ( ) ;
1217+ }
12131218 }
12141219 } ,
12151220
12161221 webAudioAvailable : ( ) => ! ! SDL . audioContext ,
12171222
12181223 fillWebAudioBufferFromHeap ( heapPtr , sizeSamplesPerChannel , dstAudioBuffer ) {
1219- // The input audio data is interleaved across the channels, i.e. [L, R, L, R, L, R, ...] and is either 8-bit, 16-bit or float as
1220- // supported by the SDL API. The output audio wave data for Web Audio API must be in planar buffers of [-1,1]-normalized Float32 data,
1221- // so perform a buffer conversion for the data.
1224+ // The input audio data is interleaved across the channels, i.e. [L, R, L,
1225+ // R, L, R, ...] and is either 8-bit, 16-bit or float as supported by the
1226+ // SDL API. The output audio wave data for Web Audio API must be in planar
1227+ // buffers of [-1,1]-normalized Float32 data, so perform a buffer
1228+ // conversion for the data.
12221229 var audio = SDL . audio ;
12231230 var numChannels = audio . channels ;
12241231 for ( var c = 0 ; c < numChannels ; ++ c ) {
@@ -1963,8 +1970,9 @@ var LibrarySDL = {
19631970 var h = srcData . height * y ;
19641971 var ret = SDL . makeSurface ( Math . abs ( w ) , Math . abs ( h ) , srcData . flags , false , 'zoomSurface' ) ;
19651972 var dstData = SDL . surfaces [ ret ] ;
1966- if ( x >= 0 && y >= 0 ) dstData . ctx . drawImage ( srcData . canvas , 0 , 0 , w , h ) ;
1967- else {
1973+ if ( x >= 0 && y >= 0 ) {
1974+ dstData . ctx . drawImage ( srcData . canvas , 0 , 0 , w , h ) ;
1975+ } else {
19681976 dstData . ctx . save ( ) ;
19691977 dstData . ctx . scale ( x < 0 ? - 1 : 1 , y < 0 ? - 1 : 1 ) ;
19701978 dstData . ctx . drawImage ( srcData . canvas , w < 0 ? w : 0 , h < 0 ? h : 0 , Math . abs ( w ) , Math . abs ( h ) ) ;
@@ -2705,8 +2713,7 @@ var LibrarySDL = {
27052713 if (stream) {
27062714 rwops = { filename: stream.path };
27072715 }
2708- }
2709- else if (type === 4/*SDL_RWOPS_MEMORY*/ || type === 5/*SDL_RWOPS_MEMORY_RO*/) {
2716+ } else if (type === 4/*SDL_RWOPS_MEMORY*/ || type === 5/*SDL_RWOPS_MEMORY_RO*/) {
27102717 var base = {{{ makeGetValue('rwopsID', C_STRUCTS.SDL_RWops.hidden.mem.base, 'i32') }}};
27112718 var stop = {{{ makeGetValue('rwopsID', C_STRUCTS.SDL_RWops.hidden.mem.stop, 'i32') }}};
27122719
@@ -2742,14 +2749,16 @@ var LibrarySDL = {
27422749 Browser.preloadedAudios[filename] = null;
27432750 }
27442751 audio = raw;
2745- }
2746- else if (rwops.bytes !== undefined) {
2747- // For Web Audio context buffer decoding, we must make a clone of the audio data, but for <media> element,
2748- // a view to existing data is sufficient.
2749- if (SDL.webAudioAvailable()) bytes = HEAPU8.buffer.slice(rwops.bytes, rwops.bytes + rwops.count);
2750- else bytes = HEAPU8.subarray(rwops.bytes, rwops.bytes + rwops.count);
2751- }
2752- else {
2752+ } else if (rwops.bytes !== undefined) {
2753+ // For Web Audio context buffer decoding, we must make a clone of the
2754+ // audio data, but for <media> element, a view to existing data is
2755+ // sufficient.
2756+ if (SDL.webAudioAvailable()) {
2757+ bytes = HEAPU8.buffer.slice(rwops.bytes, rwops.bytes + rwops.count);
2758+ } else {
2759+ bytes = HEAPU8.subarray(rwops.bytes, rwops.bytes + rwops.count);
2760+ }
2761+ } else {
27532762 return 0;
27542763 }
27552764
@@ -2769,16 +2778,17 @@ var LibrarySDL = {
27692778 // is complete, which will then start the playback (with some delay).
27702779 onDecodeComplete: [], // While this member array exists, decoding hasn't finished yet.
27712780 }
2772- var onDecodeComplete = (data) => {
2781+ SDL.audioContext['decodeAudioData'](arrayBuffer, (data) => {
27732782 webAudio.decodedBuffer = data;
2774- // Call all handlers that were waiting for this decode to finish, and clear the handler list.
2783+ // Call all handlers that were waiting for this decode to finish, and
2784+ // clear the handler list.
27752785 webAudio.onDecodeComplete.forEach((e) => e());
2776- webAudio.onDecodeComplete = undefined; // Don't allow more callback handlers since audio has finished decoding.
2777- } ;
2778- SDL.audioContext['decodeAudioData'](arrayBuffer, onDecodeComplete );
2786+ // Don't allow more callback handlers since audio has finished decoding.
2787+ delete webAudio.onDecodeComplete ;
2788+ } );
27792789 } else if (audio === undefined && bytes) {
2780- // Here, we didn't find a preloaded audio but we either were passed a filepath for
2781- // which we loaded bytes, or we were passed some bytes
2790+ // Here, we didn't find a preloaded audio but we either were passed a
2791+ // filepath for which we loaded bytes, or we were passed some bytes
27822792 var blob = new Blob([bytes], {type: rwops.mimetype});
27832793 var url = URL.createObjectURL(blob);
27842794 audio = new Audio();
@@ -2893,7 +2903,7 @@ var LibrarySDL = {
28932903 if (channelInfo.audio === this || channelInfo.audio.webAudioNode === this) {
28942904 channelInfo.audio.paused = true; channelInfo.audio = null;
28952905 }
2896- if (SDL.channelFinished) {{{ makeDynCall('vi', 'SDL.channelFinished') }}}(channel);
2906+ if (SDL.channelFinished) {{{ makeDynCall('vi', 'SDL.channelFinished') }}}(channel);
28972907 }
28982908 if (channelInfo.audio) {
28992909 _Mix_HaltChannel(channel);
@@ -2976,7 +2986,7 @@ var LibrarySDL = {
29762986 } else if (info.audio) { // Play via the <audio> element
29772987 audio = info.audio;
29782988 }
2979- audio['onended'] = function() {
2989+ audio['onended'] = function() {
29802990 if (SDL.music.audio === this || SDL.music.audio?.webAudioNode === this) {
29812991 _Mix_HaltMusic(); // will send callback
29822992 }
@@ -3068,10 +3078,7 @@ var LibrarySDL = {
30683078 return pausedCount;
30693079 }
30703080 var info = SDL.channels[channel];
3071- if (info?.audio?.paused) {
3072- return 1;
3073- }
3074- return 0;
3081+ return info?.audio?.paused ? 1 : 0;
30753082 },
30763083
30773084 Mix_PausedMusic__proxy: 'sync',
@@ -3375,8 +3382,11 @@ var LibrarySDL = {
33753382
33763383 SDL_GL_GetSwapInterval__proxy : 'sync' ,
33773384 SDL_GL_GetSwapInterval : ( ) = > {
3378- if ( MainLoop . timingMode == { { { cDefs . EM_TIMING_RAF } } } ) return MainLoop . timingValue ;
3379- else return 0 ;
3385+ if ( MainLoop . timingMode == { { { cDefs . EM_TIMING_RAF } } } ) {
3386+ return MainLoop . timingValue;
3387+ } else {
3388+ return 0 ;
3389+ }
33803390 } ,
33813391
33823392 SDL_GL_SetSwapInterval__deps : [ 'emscripten_set_main_loop_timing' ] ,
0 commit comments