Disable renderswaps when maps are being rendered

Should hopefully prevent that obnoxious renderer swap SIGSEGV from ever being run into
This commit is contained in:
Anonimus 2025-11-06 14:32:03 -05:00
parent a52fd7344b
commit 52edf25fe2
3 changed files with 13 additions and 0 deletions

View file

@ -594,11 +594,15 @@ static void D_Display(void)
// STUPID race condition...
{
wipegamestate = gamestate;
cansetrender = true;
// clean up border stuff
// see if the border needs to be initially drawn
if (gamestate == GS_LEVEL || (gamestate == GS_TITLESCREEN && titlemapinaction && curbghide && (!hidetitlemap)))
{
// Rendering a level; don't allow renderer changes!
cansetrender = false;
D_RenderLevel();
ps_uitime = I_GetPreciseTime();

View file

@ -51,6 +51,7 @@
viddef_t vid;
INT32 setmodeneeded; //video mode change needed if > 0 (the mode number to set + 1)
UINT8 setrenderneeded = 0;
boolean cansetrender = true;
//added : 03-02-98: default screen mode, as loaded/saved in config
consvar_t cv_scr_width = CVAR_INIT ("scr_width", "640", CV_SAVE, CV_Unsigned, NULL);
@ -496,6 +497,13 @@ void SCR_ChangeRenderer(void)
|| (signed)rendermode == cv_renderer.value)
return;
if (!cansetrender)
{
CONS_Alert(CONS_NOTICE, "You cannot change renderers at the moment.\n");
CV_SetValue(&cv_renderer, (signed)rendermode);
return;
}
#ifdef HWRENDER
// Check if OpenGL loaded successfully (or wasn't disabled) before switching to it.
if ((vid.glstate == VID_GL_LIBRARY_ERROR)

View file

@ -88,6 +88,7 @@ enum
extern viddef_t vid;
extern INT32 setmodeneeded; // mode number to set if needed, or 0
extern UINT8 setrenderneeded;
extern boolean cansetrender;
extern double averageFPS;