dont make the browser hang

This commit is contained in:
lizzie 2026-06-09 06:49:20 +00:00
parent 65db5c8a05
commit eaa645ab17
2 changed files with 19 additions and 2 deletions

View file

@ -5,6 +5,9 @@
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include <SDL3/SDL.h> #include <SDL3/SDL.h>
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#endif
#include "common/logging.h" #include "common/logging.h"
#include "common/scm_rev.h" #include "common/scm_rev.h"
@ -29,6 +32,9 @@ EmuWindow_SDL3::EmuWindow_SDL3(InputCommon::InputSubsystem* input_subsystem_, Co
} }
EmuWindow_SDL3::~EmuWindow_SDL3() { EmuWindow_SDL3::~EmuWindow_SDL3() {
#ifdef __EMSCRIPTEN__
emscripten_cancel_main_loop();
#endif
system.HIDCore().UnloadInputDevices(); system.HIDCore().UnloadInputDevices();
input_subsystem->Shutdown(); input_subsystem->Shutdown();
SDL_Quit(); SDL_Quit();

View file

@ -8,6 +8,9 @@
#include <memory> #include <memory>
#include <regex> #include <regex>
#include <string> #include <string>
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#endif
#include <fmt/ostream.h> #include <fmt/ostream.h>
@ -446,9 +449,17 @@ int main(int argc, char** argv) {
if (system.DebuggerEnabled()) { if (system.DebuggerEnabled()) {
system.InitializeDebugger(); 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(); emu_window->WaitEvent();
} #endif
system.DetachDebugger(); system.DetachDebugger();
void(system.Pause()); void(system.Pause());
system.ShutdownMainProcess(); system.ShutdownMainProcess();