From 47822d16069ba664b7c2084545aa8d29786460e5 Mon Sep 17 00:00:00 2001 From: lizzie Date: Tue, 9 Jun 2026 06:49:20 +0000 Subject: [PATCH] dont make the browser hang --- src/yuzu_cmd/emu_window/emu_window_sdl3.cpp | 6 ++++++ src/yuzu_cmd/yuzu.cpp | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl3.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl3.cpp index cd390d29f9..ee34b62e90 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl3.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl3.cpp @@ -5,6 +5,9 @@ // SPDX-License-Identifier: GPL-2.0-or-later #include +#ifdef __EMSCRIPTEN__ +#include +#endif #include "common/logging.h" #include "common/scm_rev.h" @@ -29,6 +32,9 @@ EmuWindow_SDL3::EmuWindow_SDL3(InputCommon::InputSubsystem* input_subsystem_, Co } EmuWindow_SDL3::~EmuWindow_SDL3() { +#ifdef __EMSCRIPTEN__ + emscripten_cancel_main_loop(); +#endif system.HIDCore().UnloadInputDevices(); input_subsystem->Shutdown(); SDL_Quit(); diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp index d20c126159..dbe8872b7a 100644 --- a/src/yuzu_cmd/yuzu.cpp +++ b/src/yuzu_cmd/yuzu.cpp @@ -8,6 +8,9 @@ #include #include #include +#ifdef __EMSCRIPTEN__ +#include +#endif #include @@ -446,9 +449,17 @@ int main(int argc, char** argv) { if (system.DebuggerEnabled()) { system.InitializeDebugger(); } - while (emu_window->IsOpen()) { + +#ifdef __EMSCRIPTEN__ + // Required so lambda fits snuggly into our "main loop" + static EmuWindow_SDL3* static_ems_emu_window = emu_window.get(); + emscripten_set_main_loop([]() { + static_ems_emu_window->WaitEvent(); + }, 0, 1); +#else + while (emu_window->IsOpen()) emu_window->WaitEvent(); - } +#endif system.DetachDebugger(); void(system.Pause()); system.ShutdownMainProcess();