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),)