From ccdd7897f2999a7ed144beaa08919566e655b1ea Mon Sep 17 00:00:00 2001 From: Sasha Szpakowski Date: Sun, 18 Aug 2024 13:08:27 -0300 Subject: [PATCH] fix love.window.setMode failing to set an exclusive fullscreen mode. --- src/modules/window/sdl/Window.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/modules/window/sdl/Window.cpp b/src/modules/window/sdl/Window.cpp index de81b5228..bdff4a0ec 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/src/modules/window/sdl/Window.cpp @@ -581,6 +581,8 @@ bool Window::setWindow(int width, int height, WindowSettings *settings) Uint32 sdlflags = 0; #if SDL_VERSION_ATLEAST(3, 0, 0) const SDL_DisplayMode *fsmode = nullptr; +#else + SDL_DisplayMode fsmode = {0, width, height, 0, nullptr}; #endif if (f.fullscreen) @@ -608,8 +610,6 @@ bool Window::setWindow(int width, int height, WindowSettings *settings) #else if (f.fstype == FULLSCREEN_EXCLUSIVE) { - SDL_DisplayMode fsmode = {0, width, height, 0, nullptr}; - // Fullscreen window creation will bug out if no mode can be used. if (SDL_GetClosestDisplayMode(f.displayindex, &fsmode, &fsmode) == nullptr) { @@ -642,12 +642,13 @@ bool Window::setWindow(int width, int height, WindowSettings *settings) SDL_SetWindowFullscreenMode(window, fsmode); if (SDL_SetWindowFullscreen(window, (sdlflags & SDL_WINDOW_FULLSCREEN) != 0) == 0 && renderer == graphics::RENDERER_OPENGL) #else + if (f.fullscreen && f.fstype == FULLSCREEN_EXCLUSIVE) + SDL_SetWindowDisplayMode(window, &fsmode); if (SDL_SetWindowFullscreen(window, sdlflags) == 0 && renderer == graphics::RENDERER_OPENGL) #endif SDL_GL_MakeCurrent(window, glcontext); - if (!f.fullscreen) - SDL_SetWindowSize(window, width, height); + SDL_SetWindowSize(window, width, height); if (this->settings.resizable != f.resizable) SDL_SetWindowResizable(window, f.resizable ? SDL_TRUE : SDL_FALSE);