static qboolean vid_usingmouse = false;
static qboolean vid_usingvsync = false;
static qboolean vid_usevsync = false;
+static qboolean vid_x11_hardwaregammasupported = false;
+static int vid_x11_gammarampsize = 0;
static float mouse_x, mouse_y;
static int p_mouse_x, p_mouse_y;
qglFinish();
qglXSwapBuffers(vidx11_display, win);
}
+
+ if (vid_x11_hardwaregammasupported)
+ VID_UpdateGamma(false, vid_x11_gammarampsize);
}
-int VID_SetGamma(unsigned short *ramps)
+int VID_SetGamma(unsigned short *ramps, int rampsize)
{
- int rampsize;
- // FIXME: it would be good to generate ramps of the size reported by X,
- // for instance Quadro cards seem to use 1024 color ramps not 256
- if(!XF86VidModeGetGammaRampSize(vidx11_display, vidx11_screen, &rampsize))
- return 0;
- if(rampsize != 256)
- return 0;
- return XF86VidModeSetGammaRamp(vidx11_display, vidx11_screen, 256, ramps, ramps + 256, ramps + 512);
+ return XF86VidModeSetGammaRamp(vidx11_display, vidx11_screen, rampsize, ramps, ramps + rampsize, ramps + rampsize*2);
}
-int VID_GetGamma(unsigned short *ramps)
+int VID_GetGamma(unsigned short *ramps, int rampsize)
{
- int rampsize;
- if(!XF86VidModeGetGammaRampSize(vidx11_display, vidx11_screen, &rampsize))
- return 0;
- if(rampsize != 256)
- return 0;
- return XF86VidModeGetGammaRamp(vidx11_display, vidx11_screen, 256, ramps, ramps + 256, ramps + 512);
+ return XF86VidModeGetGammaRamp(vidx11_display, vidx11_screen, rampsize, ramps, ramps + rampsize, ramps + rampsize*2);
}
void VID_Init(void)
vid_usingvsync = false;
vid_hidden = false;
vid_activewindow = true;
+ vid_x11_hardwaregammasupported = XF86VidModeGetGammaRampSize(vidx11_display, vidx11_screen, &vid_x11_gammarampsize) != 0;
GL_Init();
return true;
}