forked from jaildesigner-jailgames/jaildoctors_dilemma
arreglos en screen
This commit is contained in:
@@ -134,7 +134,7 @@ if(EMSCRIPTEN)
|
|||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
SDL3
|
SDL3
|
||||||
GIT_REPOSITORY https://github.com/libsdl-org/SDL.git
|
GIT_REPOSITORY https://github.com/libsdl-org/SDL.git
|
||||||
GIT_TAG release-3.2.12
|
GIT_TAG release-3.4.4
|
||||||
GIT_SHALLOW TRUE
|
GIT_SHALLOW TRUE
|
||||||
)
|
)
|
||||||
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
|
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
|
||||||
|
|||||||
1
Makefile
1
Makefile
@@ -291,6 +291,7 @@ linux_release:
|
|||||||
wasm:
|
wasm:
|
||||||
@echo "Compilando para WebAssembly - Version: $(VERSION)"
|
@echo "Compilando para WebAssembly - Version: $(VERSION)"
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
|
--user $(shell id -u):$(shell id -g) \
|
||||||
-v $(DIR_ROOT):/src \
|
-v $(DIR_ROOT):/src \
|
||||||
-w /src \
|
-w /src \
|
||||||
emscripten/emsdk:latest \
|
emscripten/emsdk:latest \
|
||||||
|
|||||||
@@ -48,8 +48,10 @@ Screen* Screen::screen = nullptr;
|
|||||||
// i el joc es veu minúscul fins que l'usuari força un refresh manual
|
// 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).
|
// (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.
|
// 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()
|
// Tots delegen en Screen::handleCanvasResized(), que crida setVideoMode()
|
||||||
// amb l'estat de fullscreen actualitzat — això és el que realment restaura
|
// amb l'estat de fullscreen actualitzat — això és el que realment restaura
|
||||||
// la finestra SDL perquè dins setVideoMode es crida SDL_SetWindowFullscreen,
|
// la finestra SDL perquè dins setVideoMode es crida SDL_SetWindowFullscreen,
|
||||||
@@ -80,11 +82,6 @@ namespace {
|
|||||||
return EM_FALSE;
|
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 {
|
auto onEmOrientationChange(int /*event_type*/, const EmscriptenOrientationChangeEvent* /*event*/, void* /*user_data*/) -> EM_BOOL {
|
||||||
emscripten_async_call(deferredCanvasResize, nullptr, 0);
|
emscripten_async_call(deferredCanvasResize, nullptr, 0);
|
||||||
return EM_FALSE;
|
return EM_FALSE;
|
||||||
@@ -832,8 +829,10 @@ auto Screen::initSDLVideo() -> bool {
|
|||||||
// Vegeu el bloc de documentació a dalt del fitxer per al context complet.
|
// Vegeu el bloc de documentació a dalt del fitxer per al context complet.
|
||||||
void Screen::registerEmscriptenEventCallbacks() { // NOLINT(readability-convert-member-functions-to-static)
|
void Screen::registerEmscriptenEventCallbacks() { // NOLINT(readability-convert-member-functions-to-static)
|
||||||
#ifdef __EMSCRIPTEN__
|
#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_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);
|
emscripten_set_orientationchange_callback(nullptr, EM_TRUE, onEmOrientationChange);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user