[PATCH] Add device gamma setting in Windows

diff -urN b/common/gl_vidnt.c head/common/gl_vidnt.c
--- b/common/gl_vidnt.c	2005-01-08 23:32:26.000000000 +1030
+++ head/common/gl_vidnt.c	2005-12-31 21:26:01.000000000 +1030
@@ -818,14 +818,33 @@
     }
 }
 
-//static BOOL gammaworks;
+void (*VID_SetGammaRamp)(unsigned short ramp[3][256]);
+static unsigned short saved_gamma_ramp[3][256];
+
+static void
+VID_SetWinGammaRamp(unsigned short ramp[3][256])
+{
+    BOOL result;
+
+    result = SetDeviceGammaRamp(maindc, ramp);
+}
 
 void
-VID_ShiftPalette(unsigned char *palette)
+Gamma_Init(void)
 {
-    // FIXME - header hacks
-    //extern byte ramps[3][256]; // commented out in VID_ShiftPalette
+    BOOL result = GetDeviceGammaRamp(maindc, saved_gamma_ramp);
+
+    if (result)
+	result = SetDeviceGammaRamp(maindc, saved_gamma_ramp);
+    if (result)
+	VID_SetGammaRamp = VID_SetWinGammaRamp;
+    else
+	VID_SetGammaRamp = NULL;
+}
 
+void
+VID_ShiftPalette(unsigned char *palette)
+{
     //VID_SetPalette (palette);
     //gammaworks = SetDeviceGammaRamp (maindc, ramps);
 }
@@ -1805,6 +1824,7 @@
     VID_SetPalette(palette);
 
     VID_SetMode(vid_default, palette);
+    Gamma_Init();
 
     maindc = GetDC(mainwindow);
     bSetupPixelFormat(maindc);
@@ -1942,3 +1962,9 @@
 	break;
     }
 }
+
+qboolean
+VID_IsFullScreen()
+{
+    return VID_GetModePtr(vid_modenum)->fullscreen;
+}
