From 9a83b3def414a56dc240e1db1807daccc7a6b95e Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Fri, 15 Jan 2021 17:14:17 +0100 Subject: [PATCH] Add r_fullscreenDesktop CVar for "desktop"/windowed fullscreen mode .. that doesn't switch the display resolution, but creates a borderless fullscreen window at current desktop resolution. SDL2-only (SDL_WINDOW_FULLSCREEN_DESKTOP). Doing this with an additional CVar instead of r_fullscreen 2 or similar has the advantage that it works properly with Alt-Enter --- neo/renderer/RenderSystem_init.cpp | 1 + neo/renderer/tr_local.h | 1 + neo/sys/glimp.cpp | 11 +++++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/neo/renderer/RenderSystem_init.cpp b/neo/renderer/RenderSystem_init.cpp index 73a44f7c..f14bb059 100644 --- a/neo/renderer/RenderSystem_init.cpp +++ b/neo/renderer/RenderSystem_init.cpp @@ -59,6 +59,7 @@ idCVar r_multiSamples( "r_multiSamples", "0", CVAR_RENDERER | CVAR_ARCHIVE | CVA idCVar r_mode( "r_mode", "5", CVAR_ARCHIVE | CVAR_RENDERER | CVAR_INTEGER, "video mode number" ); idCVar r_displayRefresh( "r_displayRefresh", "0", CVAR_RENDERER | CVAR_INTEGER | CVAR_NOCHEAT, "optional display refresh rate option for vid mode", 0.0f, 200.0f ); idCVar r_fullscreen( "r_fullscreen", "0", CVAR_RENDERER | CVAR_ARCHIVE | CVAR_BOOL, "0 = windowed, 1 = full screen" ); +idCVar r_fullscreenDesktop( "r_fullscreenDesktop", "0", CVAR_RENDERER | CVAR_ARCHIVE | CVAR_BOOL, "0: 'real' fullscreen mode 1: keep resolution 'desktop' fullscreen mode" ); idCVar r_customWidth( "r_customWidth", "720", CVAR_RENDERER | CVAR_ARCHIVE | CVAR_INTEGER, "custom screen width. set r_mode to -1 to activate" ); idCVar r_customHeight( "r_customHeight", "486", CVAR_RENDERER | CVAR_ARCHIVE | CVAR_INTEGER, "custom screen height. set r_mode to -1 to activate" ); idCVar r_singleTriangle( "r_singleTriangle", "0", CVAR_RENDERER | CVAR_BOOL, "only draw a single triangle per primitive" ); diff --git a/neo/renderer/tr_local.h b/neo/renderer/tr_local.h index 06f5f428..f2a4d659 100644 --- a/neo/renderer/tr_local.h +++ b/neo/renderer/tr_local.h @@ -814,6 +814,7 @@ extern glconfig_t glConfig; // outside of TR since it shouldn't be cleared du extern idCVar r_mode; // video mode number extern idCVar r_displayRefresh; // optional display refresh rate option for vid mode extern idCVar r_fullscreen; // 0 = windowed, 1 = full screen +extern idCVar r_fullscreenDesktop; // 0: 'real' fullscreen mode 1: keep resolution 'desktop' fullscreen mode extern idCVar r_multiSamples; // number of antialiasing samples extern idCVar r_ignore; // used for random debugging without defining new vars diff --git a/neo/sys/glimp.cpp b/neo/sys/glimp.cpp index 337dfc86..edbb580e 100644 --- a/neo/sys/glimp.cpp +++ b/neo/sys/glimp.cpp @@ -97,8 +97,15 @@ bool GLimp_Init(glimpParms_t parms) { Uint32 flags = SDL_WINDOW_OPENGL; - if (parms.fullScreen) - flags |= SDL_WINDOW_FULLSCREEN; + if (parms.fullScreen == 1) + { +#if SDL_VERSION_ATLEAST(2, 0, 0) + if(r_fullscreenDesktop.GetBool()) + flags |= SDL_WINDOW_FULLSCREEN_DESKTOP; + else +#endif + flags |= SDL_WINDOW_FULLSCREEN; + } int colorbits = 24; int depthbits = 24;