From 50ed45c9b1d559ee4ef4ce4d56591aee25629c3e Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Wed, 24 Jul 2013 07:00:44 +0000 Subject: [PATCH] gl_vidsdl.c: use SDL_SetGamma() instead of SDL's GammaRamps api. see: http://hg.libsdl.org/SDL/rev/3665bc284271 http://bugzilla.libsdl.org/show_bug.cgi?id=1979 git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@861 af15c1b1-3010-417e-b628-4374ebc0bcbd --- Quake/gl_vidsdl.c | 28 +++++++++++++++++++++++++++- Quake/vid.h | 2 ++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Quake/gl_vidsdl.c b/Quake/gl_vidsdl.c index e5be69ff..60fedb8e 100644 --- a/Quake/gl_vidsdl.c +++ b/Quake/gl_vidsdl.c @@ -104,6 +104,9 @@ cvar_t vid_gamma = {"gamma", "1", CVAR_ARCHIVE}; //johnfitz -- moved here from // //========================================================================== +#define USE_GAMMA_RAMPS 0 + +#if USE_GAMMA_RAMPS static unsigned short vid_gamma_red[256]; static unsigned short vid_gamma_green[256]; static unsigned short vid_gamma_blue[256]; @@ -111,6 +114,7 @@ static unsigned short vid_gamma_blue[256]; static unsigned short vid_sysgamma_red[256]; static unsigned short vid_sysgamma_green[256]; static unsigned short vid_sysgamma_blue[256]; +#endif static int vid_gammaworks; @@ -123,8 +127,20 @@ static void VID_Gamma_SetGamma (void) { if (draw_context && vid_gammaworks) { +#if USE_GAMMA_RAMPS if (SDL_SetGammaRamp(&vid_gamma_red[0], &vid_gamma_green[0], &vid_gamma_blue[0]) == -1) Con_Printf ("VID_Gamma_SetGamma: failed on SDL_SetGammaRamp\n"); +#else + float value; + + if (vid_gamma.value > (1.0f / GAMMA_MAX)) + value = 1.0f / vid_gamma.value; + else + value = GAMMA_MAX; + + if (SDL_SetGamma(value,value,value) == -1) + Con_Printf ("VID_Gamma_SetGamma: failed on SDL_SetGamma\n"); +#endif } } @@ -137,8 +153,13 @@ static void VID_Gamma_Restore (void) { if (draw_context && vid_gammaworks) { +#if USE_GAMMA_RAMPS if (SDL_SetGammaRamp(&vid_sysgamma_red[0], &vid_sysgamma_green[0], &vid_sysgamma_blue[0]) == -1) Con_Printf ("VID_Gamma_Restore: failed on SDL_SetGammaRamp\n"); +#else + if (SDL_SetGamma(1, 1, 1) == -1) + Con_Printf ("VID_Gamma_Restore: failed on SDL_SetGamma\n"); +#endif } } @@ -159,6 +180,7 @@ VID_Gamma_f -- callback when the cvar changes */ static void VID_Gamma_f (cvar_t *var) { +#if USE_GAMMA_RAMPS int i; for (i = 0; i < 256; i++) @@ -168,7 +190,7 @@ static void VID_Gamma_f (cvar_t *var) vid_gamma_green[i] = vid_gamma_red[i]; vid_gamma_blue[i] = vid_gamma_red[i]; } - +#endif VID_Gamma_SetGamma (); } @@ -181,7 +203,11 @@ static void VID_Gamma_Init (void) { vid_gammaworks = false; +#if USE_GAMMA_RAMPS if (SDL_GetGammaRamp (&vid_sysgamma_red[0], &vid_sysgamma_green[0], &vid_sysgamma_blue[0]) != -1) +#else + if (SDL_SetGamma(1, 1, 1) != -1) +#endif vid_gammaworks = true; Cvar_RegisterVariable (&vid_gamma); diff --git a/Quake/vid.h b/Quake/vid.h index 416bef25..b6ae5dd4 100644 --- a/Quake/vid.h +++ b/Quake/vid.h @@ -28,6 +28,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define VID_CBITS 6 #define VID_GRADES (1 << VID_CBITS) +#define GAMMA_MAX 3.0 + // moved here for global use -- kristian typedef enum { MS_UNINIT, MS_WINDOWED, MS_FULLSCREEN } modestate_t;