From 5cff7af6147e2bf700c303690c6b84eaa233fd07 Mon Sep 17 00:00:00 2001 From: Louis Gombert Date: Mon, 10 Mar 2025 23:16:35 +0100 Subject: [PATCH] Fullscreen arguments: only read on startup --- Descent3/init.cpp | 5 ++++- lib/renderer.h | 3 +++ renderer/HardwareOpenGL.cpp | 29 ++++++++++++++++------------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/Descent3/init.cpp b/Descent3/init.cpp index 3fdea35c..8f8c0e3e 100644 --- a/Descent3/init.cpp +++ b/Descent3/init.cpp @@ -1292,7 +1292,7 @@ void LoadGameSettings() { Database->read("Specmapping", &Detail_settings.Specular_lighting); Database->read("RS_bitdepth", &Render_preferred_bitdepth, sizeof(Render_preferred_bitdepth)); Database->read_int("RS_resolution", &Current_video_resolution_id); - + int tempval = 0; Database->read_int("RS_fov", &tempval); tempval = std::clamp(tempval, static_cast(D3_DEFAULT_FOV), 90); @@ -1579,6 +1579,9 @@ void InitGraphics(bool editor) { if (!InitTextures()) Error("Failed to initialize texture system."); + // Init fullscreen/windowed mode from CLI arguments + rend_InitWindowMode(); + #ifdef EDITOR char *driver = "GDIX"; diff --git a/lib/renderer.h b/lib/renderer.h index f1207cce..09ac72d1 100644 --- a/lib/renderer.h +++ b/lib/renderer.h @@ -592,6 +592,9 @@ void rend_SetGammaValue(float val); // Enable or disable fullscreen void rend_SetFullScreen(bool fullscreen); +// Init window mode from CLI flags -w/-f +bool rend_InitWindowMode(); + // Fills in the passed in pointer with the current rendering state void rend_GetRenderState(rendering_state *rstate); diff --git a/renderer/HardwareOpenGL.cpp b/renderer/HardwareOpenGL.cpp index a351edbc..9558406c 100644 --- a/renderer/HardwareOpenGL.cpp +++ b/renderer/HardwareOpenGL.cpp @@ -364,19 +364,6 @@ int opengl_Setup(oeApplication *app, const int *width, const int *height) { } } - int winArg = FindArgChar("-windowed", 'w'); - int fsArg = FindArgChar("-fullscreen", 'f'); - - if ((fsArg) && (winArg)) { - LOG_FATAL.printf("ERROR: %s AND %s specified!", GameArgs[winArg], GameArgs[fsArg]); - return (0); - } else if (winArg) { - // Override default value from database - Game_fullscreen = false; - } else if (fsArg) { - Game_fullscreen = true; - } - if (!Already_loaded) { char gl_library[256]; int arg; @@ -1162,6 +1149,22 @@ void rend_SetFullScreen(bool fullscreen) { } } +bool rend_InitWindowMode() { + int winArg = FindArgChar("-windowed", 'w'); + int fsArg = FindArgChar("-fullscreen", 'f'); + + if ((fsArg) && (winArg)) { + LOG_FATAL.printf("ERROR: %s AND %s specified!", GameArgs[winArg], GameArgs[fsArg]); + return false; + } else if (winArg) { + // Override default value from database + Game_fullscreen = false; + } else if (fsArg) { + Game_fullscreen = true; + } + return true; +} + // Resets the texture cache void opengl_ResetCache() { if (OpenGL_cache_initted) {