]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_shared.c
changed most COM_ParseToken calls to COM_ParseTokenConsole, this fixed the kills...
[xonotic/darkplaces.git] / vid_shared.c
index d333d4761827bfc5c467ceb5635d52062f422aad..196eefe8c7f8aa4b6e9ddc0b3534b3124c653588 100644 (file)
@@ -92,7 +92,7 @@ cvar_t v_color_grey_b = {CVAR_SAVE, "v_color_grey_b", "0.5", "desired color of g
 cvar_t v_color_white_r = {CVAR_SAVE, "v_color_white_r", "1", "desired color of white"};
 cvar_t v_color_white_g = {CVAR_SAVE, "v_color_white_g", "1", "desired color of white"};
 cvar_t v_color_white_b = {CVAR_SAVE, "v_color_white_b", "1", "desired color of white"};
-cvar_t v_hwgamma = {CVAR_SAVE, "v_hwgamma", "1", "enables use of hardware gamma correction ramps if available (note: does not work very well on Windows2000 and above)"};
+cvar_t v_hwgamma = {CVAR_SAVE, "v_hwgamma", "1", "enables use of hardware gamma correction ramps if available (note: does not work very well on Windows2000 and above), values are 0 = off, 1 = attempt to use hardware gamma, 2 = use hardware gamma whether it works or not"};
 cvar_t v_psycho = {0, "v_psycho", "0", "easter egg (does not work on Windows2000 or above)"};
 
 // brand of graphics chip
@@ -724,7 +724,7 @@ void VID_UpdateGamma(qboolean force, int rampsize)
        if (!force
         && !gamma_forcenextframe
         && !v_psycho.integer
-        && cachehwgamma == (vid_activewindow && v_hwgamma.integer)
+        && cachehwgamma == (vid_activewindow ? v_hwgamma.integer : 0)
         && v_gamma.value == cachegamma
         && v_contrast.value == cachecontrast
         && v_brightness.value == cachebrightness
@@ -753,7 +753,7 @@ void VID_UpdateGamma(qboolean force, int rampsize)
        BOUNDCVAR(v_color_white_g, 1, 5);cachewhite[1] = v_color_white_g.value;
        BOUNDCVAR(v_color_white_b, 1, 5);cachewhite[2] = v_color_white_b.value;
        cachecolorenable = v_color_enable.integer;
-       cachehwgamma = vid_activewindow && v_hwgamma.integer;
+       cachehwgamma = vid_activewindow ? v_hwgamma.integer : 0;
 
        gamma_forcenextframe = false;
 
@@ -825,7 +825,8 @@ void VID_UpdateGamma(qboolean force, int rampsize)
                                        *ramp++ = (unsigned short)(cos(t*(M_PI*2.0)) * 32767.0f + 32767.0f);
                }
 
-               Cvar_SetValueQuick(&vid_hardwaregammasupported, VID_SetGamma(vid_gammaramps, vid_gammarampsize));
+               // set vid_hardwaregammasupported to true if VID_SetGamma succeeds, OR if vid_hwgamma is >= 2 (forced gamma - ignores driver return value)
+               Cvar_SetValueQuick(&vid_hardwaregammasupported, VID_SetGamma(vid_gammaramps, vid_gammarampsize) || cachehwgamma >= 2);
                // if custom gamma ramps failed (Windows stupidity), restore to system gamma
                if(!vid_hardwaregammasupported.integer)
                {