From 95fc19f9a9bf797aba3db41680b1501759eecc68 Mon Sep 17 00:00:00 2001
From: MirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Date: Tue, 1 Mar 2011 19:55:33 +0200
Subject: [PATCH] Fix uservec*_enable cvars getting set dynamically, causing
 hiccups. They will now be turned on or off if the features that use them are
 on or off.

---
 data/qcsrc/client/View.qc | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/data/qcsrc/client/View.qc b/data/qcsrc/client/View.qc
index b96fb7e0..ef62afcb 100644
--- a/data/qcsrc/client/View.qc
+++ b/data/qcsrc/client/View.qc
@@ -695,6 +695,14 @@ void CSQC_UpdateView(float w, float h)
 
 	if(cvar("hud_postprocessing"))
 	{
+		// all of this should be done in the engine eventually
+
+		// enable or disable rendering types if they are used or not
+		if(cvar("r_glsl_postprocess_uservec1_enable") != (cvar("hud_postprocessing_maxbluralpha") != 0))
+			cvar_set("r_glsl_postprocess_uservec1_enable", ftos(cvar("hud_postprocessing_maxbluralpha") != 0));
+		if(cvar("r_glsl_postprocess_uservec2_enable") != (cvar("hud_powerup") != 0))
+			cvar_set("r_glsl_postprocess_uservec2_enable", ftos(cvar("hud_powerup") != 0));
+
 		// lets apply the postprocess effects from the previous two functions if needed
 		if(damage_blurpostprocess_x || content_blurpostprocess_x)
 		{
@@ -703,15 +711,13 @@ void CSQC_UpdateView(float w, float h)
 			if(blurradius != old_blurradius || bluralpha != old_bluralpha) // reduce cvar_set spam as much as possible
 			{
 				cvar_set("r_glsl_postprocess_uservec1", strcat(ftos(blurradius), " ", ftos(bluralpha), " 0 0"));
-				cvar_set("r_glsl_postprocess_uservec1_enable", "1");
 				old_blurradius = blurradius;
 				old_bluralpha = bluralpha;
 			}
 		}
-		else if(cvar("r_glsl_postprocess_uservec1_enable")) // reduce cvar_set spam as much as possible
+		else if(cvar_string("r_glsl_postprocess_uservec1") != "0 0 0 0") // reduce cvar_set spam as much as possible
 		{
 			cvar_set("r_glsl_postprocess_uservec1", "0 0 0 0");
-			cvar_set("r_glsl_postprocess_uservec1_enable", "0");
 			old_blurradius = 0;
 			old_bluralpha = 0;
 		}
@@ -729,14 +735,12 @@ void CSQC_UpdateView(float w, float h)
 			if(sharpen_intensity != old_sharpen_intensity) // reduce cvar_set spam as much as possible
 			{
 				cvar_set("r_glsl_postprocess_uservec2", strcat("0 ", ftos(-sharpen_intensity * cvar("hud_powerup")), " 0 0"));
-				cvar_set("r_glsl_postprocess_uservec2_enable", "1");
 				old_sharpen_intensity = sharpen_intensity;
 			}
 		}
-		else if(cvar("r_glsl_postprocess_uservec2_enable")) // reduce cvar_set spam as much as possible
+		else if(cvar_string("r_glsl_postprocess_uservec2") != "0 0 0 0") // reduce cvar_set spam as much as possible
 		{
 			cvar_set("r_glsl_postprocess_uservec2", "0 0 0 0");
-			cvar_set("r_glsl_postprocess_uservec2_enable", "0");
 			old_sharpen_intensity = 0;
 		}
 	}
-- 
2.39.5