SDL: emscripten: Don't fall back to simulating vsync if settings are still pending.

From 618890f8fa62d0116e993b4a56cddf3bd3bf7c60 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
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 9bed30b4ffb17..3ecb5cd1f61a2 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 942809c4a26cc..7fa44acae5e4a 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 77ed61815f069..319962a0e9cba 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_