diff options
Diffstat (limited to 'src/openttd.cpp')
-rw-r--r-- | src/openttd.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/openttd.cpp b/src/openttd.cpp index 4aeed3928..9cc5d2f20 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -73,6 +73,11 @@ #include "safeguards.h" +#ifdef __EMSCRIPTEN__ +# include <emscripten.h> +# include <emscripten/html5.h> +#endif + void CallLandscapeTick(); void IncreaseDate(); void DoPaletteAnimations(); @@ -104,6 +109,15 @@ void CDECL usererror(const char *s, ...) ShowOSErrorBox(buf, false); if (VideoDriver::GetInstance() != nullptr) VideoDriver::GetInstance()->Stop(); +#ifdef __EMSCRIPTEN__ + emscripten_exit_pointerlock(); + /* In effect, the game ends here. As emscripten_set_main_loop() caused + * the stack to be unwound, the code after MainLoop() in + * openttd_main() is never executed. */ + EM_ASM(if (window["openttd_syncfs"]) openttd_syncfs()); + EM_ASM(if (window["openttd_abort"]) openttd_abort()); +#endif + exit(1); } |