From f07b075052878d6e5247082dcbe019e7a3b0d642 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Tue, 8 Jan 2019 04:57:30 +0100 Subject: [PATCH] emscripten: install a callback for visibility changes Fixes an issue where focus blur event was being dispatched only after the game has been focused again. --- src/libsuperderpy.c | 7 +++++++ src/libsuperderpy.h | 1 + 2 files changed, 8 insertions(+) diff --git a/src/libsuperderpy.c b/src/libsuperderpy.c index 6a1d744..aff4cc0 100644 --- a/src/libsuperderpy.c +++ b/src/libsuperderpy.c @@ -384,6 +384,12 @@ SYMBOL_INTERNAL void libsuperderpy_emscripten_mainloop(void* game) { emscripten_cancel_main_loop(); } } + +SYMBOL_INTERNAL EM_BOOL libsuperderpy_emscripten_visibility_change(int eventType, const EmscriptenVisibilityChangeEvent* visibilityChangeEvent, void* game) { + libsuperderpy_emscripten_mainloop(game); + return false; +} + #endif SYMBOL_EXPORT int libsuperderpy_run(struct Game* game) { @@ -392,6 +398,7 @@ SYMBOL_EXPORT int libsuperderpy_run(struct Game* game) { return ret; } #ifdef __EMSCRIPTEN__ + emscripten_set_visibilitychange_callback(game, false, libsuperderpy_emscripten_visibility_change); emscripten_set_main_loop_arg(libsuperderpy_emscripten_mainloop, game, 0, true); return 0; #else diff --git a/src/libsuperderpy.h b/src/libsuperderpy.h index 9ccecdd..b9d90fa 100644 --- a/src/libsuperderpy.h +++ b/src/libsuperderpy.h @@ -63,6 +63,7 @@ struct GamestateResources; #include #elif defined(__EMSCRIPTEN__) #include +#include #endif #include "character.h"