Commit 0eb6f79190d6ad1c620930d054379bee3f476a2b

Daniel Gibson 2021-05-21T13:48:14

SDL_SetWindowDisplayMode(): If already fullscreen, adjust window size Otherwise only the display resolution is changed, but the SDL window size (and for example the window-surface size) aren't adjusted accordingly and thus don't fill the whole screen. See #3313

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index 5027562..25b8aeb 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -1163,6 +1163,12 @@ SDL_SetWindowDisplayMode(SDL_Window * window, const SDL_DisplayMode * mode)
         SDL_DisplayMode fullscreen_mode;
         if (SDL_GetWindowDisplayMode(window, &fullscreen_mode) == 0) {
             SDL_SetDisplayModeForDisplay(SDL_GetDisplayForWindow(window), &fullscreen_mode);
+            /* make sure the window size (and internals like window-surface size) are adjusted */
+            if (window->w != fullscreen_mode.w || window->h != fullscreen_mode.h) {
+                window->w = fullscreen_mode.w;
+                window->h = fullscreen_mode.h;
+                SDL_OnWindowResized(window);
+            }
         }
     }
     return 0;