From fb2e013e48fc98fa4d30c3d88f39bb49bc20475f Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Fri, 3 Feb 2023 15:21:37 +0100
Subject: [PATCH] Fix: set valid mode
---
src/sdl2_compat.c | 51 +++++++++++++++++++++++------------------------
1 file changed, 25 insertions(+), 26 deletions(-)
diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 217ddf3..c06e79f 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -3422,18 +3422,20 @@ SDL_GetDesktopDisplayMode(int displayIndex, SDL2_DisplayMode *mode)
DECLSPEC int SDLCALL
SDL_GetWindowDisplayMode(SDL_Window *window, SDL2_DisplayMode *mode)
{
- int ret;
- SDL_DisplayMode *dp;
- dp = SDL3_GetWindowFullscreenMode(window);
- if (dp) {
- if (mode) {
- DisplayMode_3to2(dp, mode);
+ /* returns a pointer to the fullscreen mode to use or NULL for desktop mode */
+ SDL_DisplayMode *dp = SDL3_GetWindowFullscreenMode(window);
+ if (dp == NULL) {
+ /* Desktop mode */
+ // FIXME: is this correct ?
+ dp = SDL3_GetDesktopDisplayMode(SDL3_GetPrimaryDisplay());
+ if (dp == NULL) {
+ return -1;
}
- ret = 0;
- } else {
- ret = -1;
}
- return ret;
+ if (mode) {
+ DisplayMode_3to2(dp, mode);
+ }
+ return 0;
}
static void SDL_FinalizeDisplayMode(SDL_DisplayMode *mode)
@@ -3621,26 +3623,23 @@ SDL_GetClosestDisplayMode(int displayIndex, const SDL2_DisplayMode *mode, SDL2_D
DECLSPEC int SDLCALL
SDL_SetWindowDisplayMode(SDL_Window *window, const SDL2_DisplayMode *mode)
{
-#if 0
SDL_DisplayMode dp;
DisplayMode_2to3(mode, &dp);
- return SDL3_SetWindowFullscreenMode(window, mode ? &dp : NULL);
-#else
- int count = 0;
- SDL_DisplayMode **list;
- int ret = -1;
- list = SDL3_GetFullscreenDisplayModes(SDL3_GetWindowID(window), &count);
- if (list && count) {
- ret = SDL3_SetWindowFullscreenMode(window, list[0]);
- ret = 0;
-
+ if (SDL3_SetWindowFullscreenMode(window, mode ? &dp : NULL) == 0) {
+ return 0;
} else {
- SDL_Log("FIXME no FullscreenDisplayModes ?");
- SDL_Log("list = %p count = %d window:%p %d", list, count, window, SDL3_GetWindowID(window));
+ int count = 0;
+ SDL_DisplayMode **list;
+ int ret = -1;
+
+ // FIXME: at least set a valid fullscreen mode
+ list = SDL3_GetFullscreenDisplayModes(SDL3_GetPrimaryDisplay(), &count);
+ if (list && count) {
+ ret = SDL3_SetWindowFullscreenMode(window, list[0]);
+ }
+ SDL_free(list);
+ return ret;
}
- SDL_free(list);
- return 0; // FIXME
-#endif
}
DECLSPEC int SDLCALL