From bead4aa8c7fe80b99b0f6ef2c8b1af0eaedbb9ae Mon Sep 17 00:00:00 2001 From: Zack Middleton Date: Fri, 20 Jul 2018 23:40:02 -0500 Subject: [PATCH] Fix renderer not clearing some GL extension variables at vid_restart If renderer is compiled into client (USE_RENDERER_DLOPEN=0) and after start up set r_allowExtension to 0 and run vid_restart, some extension were still used. --- code/renderergl1/tr_init.c | 4 ++++ code/renderergl2/tr_init.c | 5 +++++ code/sdl/sdl_glimp.c | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/code/renderergl1/tr_init.c b/code/renderergl1/tr_init.c index b2ccea2a..be95195a 100644 --- a/code/renderergl1/tr_init.c +++ b/code/renderergl1/tr_init.c @@ -1291,6 +1291,10 @@ void RE_Shutdown( qboolean destroyWindow ) { GLimp_Shutdown(); Com_Memset( &glConfig, 0, sizeof( glConfig ) ); + textureFilterAnisotropic = qfalse; + maxAnisotropy = 0; + displayAspect = 0.0f; + Com_Memset( &glState, 0, sizeof( glState ) ); } diff --git a/code/renderergl2/tr_init.c b/code/renderergl2/tr_init.c index 4d19cc88..b12d338d 100644 --- a/code/renderergl2/tr_init.c +++ b/code/renderergl2/tr_init.c @@ -1528,6 +1528,11 @@ void RE_Shutdown( qboolean destroyWindow ) { GLimp_Shutdown(); Com_Memset( &glConfig, 0, sizeof( glConfig ) ); + Com_Memset( &glRefConfig, 0, sizeof( glRefConfig ) ); + textureFilterAnisotropic = qfalse; + maxAnisotropy = 0; + displayAspect = 0.0f; + Com_Memset( &glState, 0, sizeof( glState ) ); } diff --git a/code/sdl/sdl_glimp.c b/code/sdl/sdl_glimp.c index debf80e9..a27eb3ed 100644 --- a/code/sdl/sdl_glimp.c +++ b/code/sdl/sdl_glimp.c @@ -308,6 +308,13 @@ static void GLimp_ClearProcAddresses( void ) { QGL_ES_1_1_PROCS; QGL_3_0_PROCS; + qglActiveTextureARB = NULL; + qglClientActiveTextureARB = NULL; + qglMultiTexCoord2fARB = NULL; + + qglLockArraysEXT = NULL; + qglUnlockArraysEXT = NULL; + #undef GLE }