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
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;