fix SDL3 fullscreen modes

This commit is contained in:
withmorten
2026-07-14 00:29:51 +02:00
parent 1252b90e03
commit d49da68af8
+8 -4
View File
@@ -1648,7 +1648,7 @@ makeVideoModeList(SDL_DisplayID displayIndex, SDL_DisplayID *displays)
SDL_DisplayMode **modes; SDL_DisplayMode **modes;
currentMode = SDL_GetCurrentDisplayMode(displays[displayIndex]); currentMode = SDL_GetCurrentDisplayMode(displays[displayIndex]);
modes = SDL_GetFullscreenDisplayModes(displayIndex, &num); modes = SDL_GetFullscreenDisplayModes(displays[displayIndex], &num);
rwFree(glGlobals.modes); rwFree(glGlobals.modes);
glGlobals.modes = rwNewT(DisplayMode, num+(currentMode != NULL ? 1 : 0), ID_DRIVER | MEMDUR_EVENT); glGlobals.modes = rwNewT(DisplayMode, num+(currentMode != NULL ? 1 : 0), ID_DRIVER | MEMDUR_EVENT);
@@ -1667,6 +1667,7 @@ makeVideoModeList(SDL_DisplayID displayIndex, SDL_DisplayID *displays)
// set depth to power of two // set depth to power of two
for(glGlobals.modes[i].depth = 1; glGlobals.modes[i].depth < depth; glGlobals.modes[i].depth <<= 1); for(glGlobals.modes[i].depth = 1; glGlobals.modes[i].depth < depth; glGlobals.modes[i].depth <<= 1);
} }
SDL_free(modes); SDL_free(modes);
} }
@@ -1736,9 +1737,12 @@ startSDL3(void)
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, profiles[i].minor); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, profiles[i].minor);
if(mode->flags & VIDEOMODEEXCLUSIVE) { if(mode->flags & VIDEOMODEEXCLUSIVE) {
win = SDL_CreateWindow(glGlobals.winTitle, mode->mode.w, mode->mode.h, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN); win = SDL_CreateWindow(glGlobals.winTitle, mode->mode.w, mode->mode.h, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);
if (win) // This is the recommended way for SDL3.
if (win) {
SDL_SetWindowFullscreenMode(win, &mode->mode); SDL_SetWindowFullscreenMode(win, &mode->mode);
SDL_SetWindowFullscreen(win, true);
}
} else { } else {
win = SDL_CreateWindow(glGlobals.winTitle, glGlobals.winWidth, glGlobals.winHeight, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL); win = SDL_CreateWindow(glGlobals.winTitle, glGlobals.winWidth, glGlobals.winHeight, SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL);
if (win) if (win)
@@ -2244,7 +2248,7 @@ deviceSystemSDL3(DeviceReq req, void *arg, int32 n)
return 1; return 1;
case DEVICEGETVIDEOMODEINFO: case DEVICEGETVIDEOMODEINFO:
if (n <= 0) if (n < 0)
return 0; return 0;
rwmode = (VideoMode*)arg; rwmode = (VideoMode*)arg;
rwmode->width = glGlobals.modes[n].mode.w; rwmode->width = glGlobals.modes[n].mode.w;