sdl2-compat: video: SDL_GetWindowFlags needs to report SDL_WINDOW_SHOWN if not hidden.

From 7bf23952d066af3ae034786bfa298b06bac3b201 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Thu, 29 Dec 2022 13:53:53 -0500
Subject: [PATCH] video: SDL_GetWindowFlags needs to report SDL_WINDOW_SHOWN if
 not hidden.

(Currently, SDL3_CreateWindow will ignore the SHOWN flag, as it did in SDL2.)
---
 src/sdl2_compat.c | 14 +++++++++++++-
 src/sdl3_syms.h   |  2 +-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 4804bbe..96bc035 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -611,7 +611,8 @@ typedef struct SDL2_RWops
     } hidden;
 } SDL2_RWops;
 
-
+/* removed in SDL3 (which only uses SDL_WINDOW_HIDDEN now). */
+#define SDL2_WINDOW_SHOWN 0x000000004
 
 /* this enum changed in SDL3. */
 typedef enum
@@ -2889,6 +2890,17 @@ SDL_FreeWAV(Uint8 *audio_buf)
     SDL3_free(audio_buf);
 }
 
+/* SDL3 removed SDL_WINDOW_SHOWN as redundant to SDL_WINDOW_HIDDEN. */
+DECLSPEC Uint32 SDLCALL
+SDL_GetWindowFlags(SDL_Window *window)
+{
+    Uint32 flags = SDL3_GetWindowFlags(window);
+    if ((flags & SDL_WINDOW_HIDDEN) == 0) {
+        flags |= SDL2_WINDOW_SHOWN;
+    }
+    return flags;
+}
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/sdl3_syms.h b/src/sdl3_syms.h
index fa78a0b..bb84212 100644
--- a/src/sdl3_syms.h
+++ b/src/sdl3_syms.h
@@ -525,7 +525,7 @@ SDL3_SYM_PASSTHROUGH(SDL_Window*,CreateWindow,(const char *a, int b, int c, int
 SDL3_SYM_PASSTHROUGH(SDL_Window*,CreateWindowFrom,(const void *a),(a),return)
 SDL3_SYM_PASSTHROUGH(Uint32,GetWindowID,(SDL_Window *a),(a),return)
 SDL3_SYM_PASSTHROUGH(SDL_Window*,GetWindowFromID,(Uint32 a),(a),return)
-SDL3_SYM_PASSTHROUGH(Uint32,GetWindowFlags,(SDL_Window *a),(a),return)
+SDL3_SYM(Uint32,GetWindowFlags,(SDL_Window *a),(a),return)
 SDL3_SYM_PASSTHROUGH(void,SetWindowTitle,(SDL_Window *a, const char *b),(a,b),)
 SDL3_SYM_PASSTHROUGH(const char*,GetWindowTitle,(SDL_Window *a),(a),return)
 SDL3_SYM_PASSTHROUGH(void,SetWindowIcon,(SDL_Window *a, SDL_Surface *b),(a,b),)