From 618890f8fa62d0116e993b4a56cddf3bd3bf7c60 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 27 Aug 2026 00:18:25 -0400 Subject: [PATCH] emscripten: Don't fall back to simulating vsync if settings are still pending. Fixes #16146. Closes #16151. --- src/video/emscripten/SDL_emscriptenopengles.c | 6 ++++++ src/video/emscripten/SDL_emscriptenvideo.c | 5 +++++ src/video/emscripten/SDL_emscriptenvideo.h | 1 + 3 files changed, 12 insertions(+) diff --git a/src/video/emscripten/SDL_emscriptenopengles.c b/src/video/emscripten/SDL_emscriptenopengles.c index 9bed30b4ff..3ecb5cd1f6 100644 --- a/src/video/emscripten/SDL_emscriptenopengles.c +++ b/src/video/emscripten/SDL_emscriptenopengles.c @@ -67,6 +67,12 @@ bool Emscripten_GLES_SetSwapInterval(SDL_VideoDevice *_this, int interval) bool Emscripten_GLES_GetSwapInterval(SDL_VideoDevice *_this, int *interval) { + const int pending = Emscripten_GetPendingSwapInterval(); + if (pending >= 0) { + *interval = pending; + return true; // we're planning to set it to this once the system settles down. + } + int mode, value; emscripten_get_main_loop_timing(&mode, &value); diff --git a/src/video/emscripten/SDL_emscriptenvideo.c b/src/video/emscripten/SDL_emscriptenvideo.c index 942809c4a2..7fa44acae5 100644 --- a/src/video/emscripten/SDL_emscriptenvideo.c +++ b/src/video/emscripten/SDL_emscriptenvideo.c @@ -438,6 +438,11 @@ bool Emscripten_ShouldSetSwapInterval(int interval) return true; } +int Emscripten_GetPendingSwapInterval(void) +{ + return pending_swap_interval; +} + static void Emscripten_PumpEvents(SDL_VideoDevice *_this) { if (!pumpevents_has_run) { diff --git a/src/video/emscripten/SDL_emscriptenvideo.h b/src/video/emscripten/SDL_emscriptenvideo.h index 77ed61815f..319962a0e9 100644 --- a/src/video/emscripten/SDL_emscriptenvideo.h +++ b/src/video/emscripten/SDL_emscriptenvideo.h @@ -57,5 +57,6 @@ struct SDL_WindowData extern SDL_Window *Emscripten_fill_document_window; bool Emscripten_ShouldSetSwapInterval(int interval); +int Emscripten_GetPendingSwapInterval(void); #endif // SDL_emscriptenvideo_h_