diff --git a/src/lib/libhtml5.js b/src/lib/libhtml5.js index ece133718fa25..79f0a33df37df 100644 --- a/src/lib/libhtml5.js +++ b/src/lib/libhtml5.js @@ -1105,7 +1105,20 @@ var LibraryHTML5 = { return {{{ cDefs.EMSCRIPTEN_RESULT_SUCCESS }}}; }, - $JSEvents_requestFullscreen__deps: ['$JSEvents', '$JSEvents_resizeCanvasForFullscreen'], +#if PTHREADS + $callCanvasResizedCallback__deps: ['_emscripten_run_callback_on_thread'], +#endif + $callCanvasResizedCallback: (strategy) => { + if (strategy.canvasResizedCallback) { +#if PTHREADS + if (strategy.canvasResizedCallbackTargetThread) __emscripten_run_callback_on_thread(strategy.canvasResizedCallbackTargetThread, strategy.canvasResizedCallback, {{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, 0, strategy.canvasResizedCallbackUserData); + else +#endif + {{{ makeDynCall('iipp', 'strategy.canvasResizedCallback') }}}({{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, strategy.canvasResizedCallbackUserData); + } + }, + + $JSEvents_requestFullscreen__deps: ['$JSEvents', '$JSEvents_resizeCanvasForFullscreen', '$callCanvasResizedCallback'], $JSEvents_requestFullscreen: (target, strategy) => { // EMSCRIPTEN_FULLSCREEN_SCALE_DEFAULT + EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_NONE is a mode where no extra logic is performed to the DOM elements. if (strategy.scaleMode != {{{ cDefs.EMSCRIPTEN_FULLSCREEN_SCALE_DEFAULT }}} || strategy.canvasResolutionScaleMode != {{{ cDefs.EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_NONE }}}) { @@ -1123,15 +1136,7 @@ var LibraryHTML5 = { } currentFullscreenStrategy = strategy; - - if (strategy.canvasResizedCallback) { -#if PTHREADS - if (strategy.canvasResizedCallbackTargetThread) __emscripten_run_callback_on_thread(strategy.canvasResizedCallbackTargetThread, strategy.canvasResizedCallback, {{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, 0, strategy.canvasResizedCallbackUserData); - else -#endif - {{{ makeDynCall('iipp', 'strategy.canvasResizedCallback') }}}({{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, strategy.canvasResizedCallbackUserData); - } - + callCanvasResizedCallback(strategy); return {{{ cDefs.EMSCRIPTEN_RESULT_SUCCESS }}}; }, @@ -1193,7 +1198,7 @@ var LibraryHTML5 = { return restoreOldStyle; }, - $registerRestoreOldStyle__deps: ['$getCanvasElementSize', '$setCanvasElementSize', '$currentFullscreenStrategy'], + $registerRestoreOldStyle__deps: ['$getCanvasElementSize', '$setCanvasElementSize', '$currentFullscreenStrategy', '$callCanvasResizedCallback'], $registerRestoreOldStyle: (canvas) => { var canvasSize = getCanvasElementSize(canvas); var oldWidth = canvasSize[0]; @@ -1249,13 +1254,7 @@ var LibraryHTML5 = { canvas.style.imageRendering = oldImageRendering; if (canvas.GLctxObject) canvas.GLctxObject.GLctx.viewport(0, 0, oldWidth, oldHeight); - if (currentFullscreenStrategy.canvasResizedCallback) { -#if PTHREADS - if (currentFullscreenStrategy.canvasResizedCallbackTargetThread) __emscripten_run_callback_on_thread(currentFullscreenStrategy.canvasResizedCallbackTargetThread, currentFullscreenStrategy.canvasResizedCallback, {{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, 0, currentFullscreenStrategy.canvasResizedCallbackUserData); - else -#endif - {{{ makeDynCall('iipp', 'currentFullscreenStrategy.canvasResizedCallback') }}}({{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, currentFullscreenStrategy.canvasResizedCallbackUserData); - } + callCanvasResizedCallback(currentFullscreenStrategy); } } document.addEventListener('fullscreenchange', restoreOldStyle); @@ -1301,10 +1300,10 @@ var LibraryHTML5 = { element.style.paddingTop = element.style.paddingBottom = topBottom + 'px'; }, - $currentFullscreenStrategy: {}, + $currentFullscreenStrategy: 0, $restoreOldWindowedStyle: null, - $softFullscreenResizeWebGLRenderTarget__deps: ['$setLetterbox', '$currentFullscreenStrategy', '$getCanvasElementSize', '$setCanvasElementSize', '$jstoi_q'], + $softFullscreenResizeWebGLRenderTarget__deps: ['$setLetterbox', '$currentFullscreenStrategy', '$getCanvasElementSize', '$setCanvasElementSize', '$jstoi_q', '$callCanvasResizedCallback'], $softFullscreenResizeWebGLRenderTarget: () => { var dpr = devicePixelRatio; var inHiDPIFullscreenMode = currentFullscreenStrategy.canvasResolutionScaleMode == {{{ cDefs.EMSCRIPTEN_FULLSCREEN_CANVAS_SCALE_HIDEF }}}; @@ -1354,12 +1353,8 @@ var LibraryHTML5 = { setLetterbox(canvas, topMargin, b); } - if (!inCenteredWithoutScalingFullscreenMode && currentFullscreenStrategy.canvasResizedCallback) { -#if PTHREADS - if (currentFullscreenStrategy.canvasResizedCallbackTargetThread) __emscripten_run_callback_on_thread(currentFullscreenStrategy.canvasResizedCallbackTargetThread, currentFullscreenStrategy.canvasResizedCallback, {{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, 0, currentFullscreenStrategy.canvasResizedCallbackUserData); - else -#endif - {{{ makeDynCall('iipp', 'currentFullscreenStrategy.canvasResizedCallback') }}}({{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, currentFullscreenStrategy.canvasResizedCallbackUserData); + if (!inCenteredWithoutScalingFullscreenMode) { + callCanvasResizedCallback(currentFullscreenStrategy); } }, @@ -1432,7 +1427,7 @@ var LibraryHTML5 = { return doRequestFullscreen(target, strategy); }, - emscripten_enter_soft_fullscreen__deps: ['$JSEvents', '$hideEverythingExceptGivenElement', '$restoreOldWindowedStyle', '$restoreHiddenElements', '$currentFullscreenStrategy', '$softFullscreenResizeWebGLRenderTarget', '$JSEvents_resizeCanvasForFullscreen', '$findEventTarget'], + emscripten_enter_soft_fullscreen__deps: ['$JSEvents', '$hideEverythingExceptGivenElement', '$restoreOldWindowedStyle', '$restoreHiddenElements', '$currentFullscreenStrategy', '$softFullscreenResizeWebGLRenderTarget', '$JSEvents_resizeCanvasForFullscreen', '$findEventTarget', '$callCanvasResizedCallback'], emscripten_enter_soft_fullscreen__proxy: 'sync', emscripten_enter_soft_fullscreen: (target, fullscreenStrategy) => { #if !DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR @@ -1442,16 +1437,16 @@ var LibraryHTML5 = { if (!target) return {{{ cDefs.EMSCRIPTEN_RESULT_UNKNOWN_TARGET }}}; var strategy = { - scaleMode: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.scaleMode, 'i32') }}}, - canvasResolutionScaleMode: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.canvasResolutionScaleMode, 'i32') }}}, - filteringMode: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.filteringMode, 'i32') }}}, - canvasResizedCallback: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.canvasResizedCallback, 'i32') }}}, - canvasResizedCallbackUserData: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.canvasResizedCallbackUserData, 'i32') }}}, + scaleMode: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.scaleMode, 'i32') }}}, + canvasResolutionScaleMode: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.canvasResolutionScaleMode, 'i32') }}}, + filteringMode: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.filteringMode, 'i32') }}}, + canvasResizedCallback: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.canvasResizedCallback, 'i32') }}}, + canvasResizedCallbackUserData: {{{ makeGetValue('fullscreenStrategy', C_STRUCTS.EmscriptenFullscreenStrategy.canvasResizedCallbackUserData, 'i32') }}}, #if PTHREADS - canvasResizedCallbackTargetThread: JSEvents.getTargetThreadForEventCallback(), + canvasResizedCallbackTargetThread: JSEvents.getTargetThreadForEventCallback(), #endif - target, - softFullscreen: true + target, + softFullscreen: true }; var restoreOldStyle = JSEvents_resizeCanvasForFullscreen(target, strategy); @@ -1466,13 +1461,7 @@ var LibraryHTML5 = { restoreOldStyle(); restoreHiddenElements(hiddenElements); removeEventListener('resize', softFullscreenResizeWebGLRenderTarget); - if (strategy.canvasResizedCallback) { -#if PTHREADS - if (strategy.canvasResizedCallbackTargetThread) __emscripten_run_callback_on_thread(strategy.canvasResizedCallbackTargetThread, strategy.canvasResizedCallback, {{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, 0, strategy.canvasResizedCallbackUserData); - else -#endif - {{{ makeDynCall('iipp', 'strategy.canvasResizedCallback') }}}({{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, strategy.canvasResizedCallbackUserData); - } + callCanvasResizedCallback(strategy); currentFullscreenStrategy = 0; } restoreOldWindowedStyle = restoreWindowedState; @@ -1480,14 +1469,7 @@ var LibraryHTML5 = { addEventListener('resize', softFullscreenResizeWebGLRenderTarget); // Inform the caller that the canvas size has changed. - if (strategy.canvasResizedCallback) { -#if PTHREADS - if (strategy.canvasResizedCallbackTargetThread) __emscripten_run_callback_on_thread(strategy.canvasResizedCallbackTargetThread, strategy.canvasResizedCallback, {{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, 0, strategy.canvasResizedCallbackUserData); - else -#endif - {{{ makeDynCall('iipp', 'strategy.canvasResizedCallback') }}}({{{ cDefs.EMSCRIPTEN_EVENT_CANVASRESIZED }}}, 0, strategy.canvasResizedCallbackUserData); - } - + callCanvasResizedCallback(strategy); return {{{ cDefs.EMSCRIPTEN_RESULT_SUCCESS }}}; }, diff --git a/test/codesize/test_codesize_hello_O0.json b/test/codesize/test_codesize_hello_O0.json index b3fbd259a048d..fa5e682019094 100644 --- a/test/codesize/test_codesize_hello_O0.json +++ b/test/codesize/test_codesize_hello_O0.json @@ -1,10 +1,10 @@ { - "a.out.js": 23560, - "a.out.js.gz": 8608, + "a.out.js": 23586, + "a.out.js.gz": 8615, "a.out.nodebug.wasm": 15115, "a.out.nodebug.wasm.gz": 7464, - "total": 38675, - "total_gz": 16072, + "total": 38701, + "total_gz": 16079, "sent": [ "fd_write" ], diff --git a/test/codesize/test_codesize_hello_dylink_all.json b/test/codesize/test_codesize_hello_dylink_all.json index ed5c3055fd6f3..2cfcb515d7376 100644 --- a/test/codesize/test_codesize_hello_dylink_all.json +++ b/test/codesize/test_codesize_hello_dylink_all.json @@ -1,7 +1,7 @@ { - "a.out.js": 268311, + "a.out.js": 268243, "a.out.nodebug.wasm": 587978, - "total": 856289, + "total": 856221, "sent": [ "IMG_Init", "IMG_Load", diff --git a/test/codesize/test_codesize_minimal_O0.expected.js b/test/codesize/test_codesize_minimal_O0.expected.js index 2768cbc816e18..f768e93cd3692 100644 --- a/test/codesize/test_codesize_minimal_O0.expected.js +++ b/test/codesize/test_codesize_minimal_O0.expected.js @@ -969,12 +969,14 @@ Module['FS_createPreloadedFile'] = FS.createPreloadedFile; 'registerOrientationChangeEventCallback', 'fillFullscreenChangeEventData', 'registerFullscreenChangeEventCallback', + 'callCanvasResizedCallback', 'JSEvents_requestFullscreen', 'JSEvents_resizeCanvasForFullscreen', 'registerRestoreOldStyle', 'hideEverythingExceptGivenElement', 'restoreHiddenElements', 'setLetterbox', + 'currentFullscreenStrategy', 'softFullscreenResizeWebGLRenderTarget', 'doRequestFullscreen', 'fillPointerlockChangeEventData', @@ -1076,7 +1078,6 @@ missingLibrarySymbols.forEach(missingLibrarySymbol) 'JSEvents', 'specialHTMLTargets', 'findCanvasEventTarget', - 'currentFullscreenStrategy', 'restoreOldWindowedStyle', 'UNWIND_CACHE', 'ExitStatus', diff --git a/test/codesize/test_codesize_minimal_O0.json b/test/codesize/test_codesize_minimal_O0.json index 18375b41ac425..471feccf094c2 100644 --- a/test/codesize/test_codesize_minimal_O0.json +++ b/test/codesize/test_codesize_minimal_O0.json @@ -1,10 +1,10 @@ { - "a.out.js": 18764, - "a.out.js.gz": 6779, + "a.out.js": 18790, + "a.out.js.gz": 6786, "a.out.nodebug.wasm": 1015, "a.out.nodebug.wasm.gz": 602, - "total": 19779, - "total_gz": 7381, + "total": 19805, + "total_gz": 7388, "sent": [], "imports": [], "exports": [ diff --git a/test/codesize/test_unoptimized_code_size.json b/test/codesize/test_unoptimized_code_size.json index ef39819ba2646..5e254e55d89b8 100644 --- a/test/codesize/test_unoptimized_code_size.json +++ b/test/codesize/test_unoptimized_code_size.json @@ -1,16 +1,16 @@ { - "hello_world.js": 56122, - "hello_world.js.gz": 17671, + "hello_world.js": 56153, + "hello_world.js.gz": 17678, "hello_world.wasm": 15115, "hello_world.wasm.gz": 7464, "no_asserts.js": 25585, "no_asserts.js.gz": 8688, "no_asserts.wasm": 12229, "no_asserts.wasm.gz": 6004, - "strict.js": 53224, - "strict.js.gz": 16642, + "strict.js": 53255, + "strict.js.gz": 16649, "strict.wasm": 15115, "strict.wasm.gz": 7461, - "total": 177390, - "total_gz": 63930 + "total": 177452, + "total_gz": 63944 }