From 3ee29f2e7a3af825daf39ec980d5f92896773b45 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 16 Sep 2025 12:30:22 -0400 Subject: [PATCH] render: Don't default to vsync=0 on Emscripten. Fixes #12805. --- src/render/SDL_render.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index 19b8222344..03faa51640 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -1147,8 +1147,16 @@ SDL_Renderer *SDL_CreateRendererWithProperties(SDL_PropertiesID props) SDL_AddWindowEventWatch(SDL_WINDOW_EVENT_WATCH_NORMAL, SDL_RendererEventWatch, renderer); } - int vsync = (int)SDL_GetNumberProperty(props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER, 0); +#ifdef SDL_PLATFORM_EMSCRIPTEN // don't change vsync on Emscripten unless explicitly requested; we already set this with a mainloop, and a 0 default causes problems here. + if (SDL_HasProperty(props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER)) { + const int vsync = (int)SDL_GetNumberProperty(props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER, 0); + SDL_SetRenderVSync(renderer, vsync); + } +#else // everything else defaults to no vsync if not requested. + const int vsync = (int)SDL_GetNumberProperty(props, SDL_PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER, 0); SDL_SetRenderVSync(renderer, vsync); +#endif + SDL_CalculateSimulatedVSyncInterval(renderer, window); SDL_LogInfo(SDL_LOG_CATEGORY_RENDER,