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
}