arreglos en screen
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user