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:
parent
a52fd7344b
commit
52edf25fe2
3 changed files with 13 additions and 0 deletions
|
|
@ -594,11 +594,15 @@ static void D_Display(void)
|
||||||
// STUPID race condition...
|
// STUPID race condition...
|
||||||
{
|
{
|
||||||
wipegamestate = gamestate;
|
wipegamestate = gamestate;
|
||||||
|
cansetrender = true;
|
||||||
|
|
||||||
// clean up border stuff
|
// clean up border stuff
|
||||||
// see if the border needs to be initially drawn
|
// see if the border needs to be initially drawn
|
||||||
if (gamestate == GS_LEVEL || (gamestate == GS_TITLESCREEN && titlemapinaction && curbghide && (!hidetitlemap)))
|
if (gamestate == GS_LEVEL || (gamestate == GS_TITLESCREEN && titlemapinaction && curbghide && (!hidetitlemap)))
|
||||||
{
|
{
|
||||||
|
// Rendering a level; don't allow renderer changes!
|
||||||
|
cansetrender = false;
|
||||||
|
|
||||||
D_RenderLevel();
|
D_RenderLevel();
|
||||||
|
|
||||||
ps_uitime = I_GetPreciseTime();
|
ps_uitime = I_GetPreciseTime();
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@
|
||||||
viddef_t vid;
|
viddef_t vid;
|
||||||
INT32 setmodeneeded; //video mode change needed if > 0 (the mode number to set + 1)
|
INT32 setmodeneeded; //video mode change needed if > 0 (the mode number to set + 1)
|
||||||
UINT8 setrenderneeded = 0;
|
UINT8 setrenderneeded = 0;
|
||||||
|
boolean cansetrender = true;
|
||||||
|
|
||||||
//added : 03-02-98: default screen mode, as loaded/saved in config
|
//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);
|
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)
|
|| (signed)rendermode == cv_renderer.value)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (!cansetrender)
|
||||||
|
{
|
||||||
|
CONS_Alert(CONS_NOTICE, "You cannot change renderers at the moment.\n");
|
||||||
|
CV_SetValue(&cv_renderer, (signed)rendermode);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
// Check if OpenGL loaded successfully (or wasn't disabled) before switching to it.
|
// Check if OpenGL loaded successfully (or wasn't disabled) before switching to it.
|
||||||
if ((vid.glstate == VID_GL_LIBRARY_ERROR)
|
if ((vid.glstate == VID_GL_LIBRARY_ERROR)
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,7 @@ enum
|
||||||
extern viddef_t vid;
|
extern viddef_t vid;
|
||||||
extern INT32 setmodeneeded; // mode number to set if needed, or 0
|
extern INT32 setmodeneeded; // mode number to set if needed, or 0
|
||||||
extern UINT8 setrenderneeded;
|
extern UINT8 setrenderneeded;
|
||||||
|
extern boolean cansetrender;
|
||||||
|
|
||||||
extern double averageFPS;
|
extern double averageFPS;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue