From d5b4bfc77f054a41f1f5feb4971fcefbb4d6c94a Mon Sep 17 00:00:00 2001 From: treeform Date: Mon, 8 Dec 2025 16:23:55 -0800 Subject: [PATCH] make window.run() use emscripten_set_main_loop --- src/windy/platforms/emscripten/emdefs.nim | 1 - src/windy/platforms/emscripten/platform.nim | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/windy/platforms/emscripten/emdefs.nim b/src/windy/platforms/emscripten/emdefs.nim index 8e418de..b0194f1 100644 --- a/src/windy/platforms/emscripten/emdefs.nim +++ b/src/windy/platforms/emscripten/emdefs.nim @@ -8,7 +8,6 @@ proc emscripten_set_main_loop*(f: proc() {.cdecl.}, a: cint, b: bool) {.importc. # Additional Emscripten functions that might be needed proc emscripten_cancel_main_loop*() {.importc.} proc emscripten_get_now*(): cdouble {.importc.} -proc emscripten_request_animation_frame_loop*(f: proc(time: cdouble): cint {.cdecl.}, userData: pointer): cint {.importc.} proc emscripten_sleep*(ms: cuint) {.importc.} # WebGL bindings diff --git a/src/windy/platforms/emscripten/platform.nim b/src/windy/platforms/emscripten/platform.nim index 053f9ac..eba0982 100644 --- a/src/windy/platforms/emscripten/platform.nim +++ b/src/windy/platforms/emscripten/platform.nim @@ -100,6 +100,15 @@ proc pollEvents*() = pollHttp() emscripten_sleep(0) +proc run*(window: Window) = + proc mainLoop() {.cdecl.} = + if mainWindow != nil: + if mainWindow.onFrame != nil: + mainWindow.onFrame() + mainWindow.state.perFrame = PerFrame() + pollHttp() + emscripten_set_main_loop(mainLoop, 0, true) + proc size*(window: Window): IVec2 = # Get the size of the canvas. result.x = get_window_width() * get_device_pixel_ratio().int32