arreglos en screen

This commit is contained in:
2026-04-15 06:31:43 +02:00
parent 6e0d9235a3
commit 727e55af03
3 changed files with 8 additions and 8 deletions

View File

@@ -48,8 +48,10 @@ Screen* Screen::screen = nullptr;
// i el joc es veu minúscul fins que l'usuari força un refresh manual
// (p. ex., canviant el mode d'escalat amb F7).
//
// Solució: registrem callbacks natius d'Emscripten (fullscreenchange, resize,
// Solució: registrem callbacks natius d'Emscripten (fullscreenchange,
// orientationchange) que re-sincronitzen SDL amb l'estat real del navegador.
// NO registrem resize callback: en mòbil el scroll fa que el navegador oculti/
// mostri la barra d'URL, disparant un resize del DOM per cada scroll.
// Tots delegen en Screen::handleCanvasResized(), que crida setVideoMode()
// amb l'estat de fullscreen actualitzat — això és el que realment restaura
// la finestra SDL perquè dins setVideoMode es crida SDL_SetWindowFullscreen,
@@ -80,11 +82,6 @@ namespace {
return EM_FALSE;
}
auto onEmResize(int /*event_type*/, const EmscriptenUiEvent* /*event*/, void* /*user_data*/) -> EM_BOOL {
emscripten_async_call(deferredCanvasResize, nullptr, 0);
return EM_FALSE;
}
auto onEmOrientationChange(int /*event_type*/, const EmscriptenOrientationChangeEvent* /*event*/, void* /*user_data*/) -> EM_BOOL {
emscripten_async_call(deferredCanvasResize, nullptr, 0);
return EM_FALSE;
@@ -832,8 +829,10 @@ auto Screen::initSDLVideo() -> bool {
// Vegeu el bloc de documentació a dalt del fitxer per al context complet.
void Screen::registerEmscriptenEventCallbacks() { // NOLINT(readability-convert-member-functions-to-static)
#ifdef __EMSCRIPTEN__
// NO registrem resize callback. En mòbil, fer scroll fa que el navegador
// oculti/mostri la barra d'URL disparant un resize del DOM per cada scroll,
// i això portaria a cridar setVideoMode innecessàriament. Alineat amb CC i CCAE.
emscripten_set_fullscreenchange_callback(EMSCRIPTEN_EVENT_TARGET_DOCUMENT, nullptr, EM_TRUE, onEmFullscreenChange);
emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, nullptr, EM_TRUE, onEmResize);
emscripten_set_orientationchange_callback(nullptr, EM_TRUE, onEmOrientationChange);
#endif
}