sdl2-compat: window: Fix SDL_GetWindowFlags(NULL) behavior to match SDL2

From d5d7aa4393cd0f50a7e525d33a370dc9f8bc6d70 Mon Sep 17 00:00:00 2001
From: Cameron Gutman <[EMAIL REDACTED]>
Date: Thu, 1 May 2025 01:45:13 -0500
Subject: [PATCH] window: Fix SDL_GetWindowFlags(NULL) behavior to match SDL2

SDL_GetWindowID() is a cheap way to identify a valid window with no side-effects.

Fixes #477
---
 src/sdl2_compat.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 1b92ee9..061f2e7 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -8874,6 +8874,12 @@ SDL_GetWindowFlags(SDL_Window *window)
     Uint32 flags3 = (Uint32) SDL3_GetWindowFlags(window);
     Uint32 flags = (flags3 & ~(SDL2_WINDOW_SHOWN | SDL2_WINDOW_FULLSCREEN | SDL2_WINDOW_FULLSCREEN_DESKTOP | SDL2_WINDOW_SKIP_TASKBAR | SDL2_WINDOW_ALWAYS_ON_TOP));
 
+    /* If we get no flags back from SDL3, check if the window is actually valid */
+    if (flags3 == 0 && SDL3_GetWindowID(window) == 0) {
+        /* SDL2 always returns 0 for an invalid window */
+        return 0;
+    }
+
     if ((flags3 & SDL2_WINDOW_HIDDEN) == 0) {
         flags |= SDL2_WINDOW_SHOWN;
     }