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
This commit is contained in:
Daniel Gibson 2021-05-21 13:48:14 +02:00 committed by Sam Lantinga
parent 72d8128520
commit 0eb6f79190
1 changed files with 6 additions and 0 deletions

View File

@ -1163,6 +1163,12 @@ SDL_SetWindowDisplayMode(SDL_Window * window, const SDL_DisplayMode * mode)
SDL_DisplayMode fullscreen_mode; SDL_DisplayMode fullscreen_mode;
if (SDL_GetWindowDisplayMode(window, &fullscreen_mode) == 0) { if (SDL_GetWindowDisplayMode(window, &fullscreen_mode) == 0) {
SDL_SetDisplayModeForDisplay(SDL_GetDisplayForWindow(window), &fullscreen_mode); 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; return 0;