From: Michel Dänzer <[email protected]>

Just use the RandR gamma ramp directly.

Fixes random on-monitor colours with drivers which don't call
xf86HandleColormaps, e.g. modesetting.

Signed-off-by: Michel Dänzer <[email protected]>
---
 hw/xfree86/modes/xf86RandR12.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index 4e0e4a8..c28a4e0 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -1310,9 +1310,17 @@ xf86RandR12CrtcSetGamma(ScreenPtr pScreen, RRCrtcPtr 
randr_crtc)
 
     if (randrp->palette_size) {
         xf86RandR12CrtcComputeGamma(pScreen, randr_crtc);
-        xf86RandR12CrtcReloadGamma(randr_crtc);
+    } else {
+        memcpy(crtc->gamma_red, randr_crtc->gammaRed,
+               crtc->gamma_size * sizeof(crtc->gamma_red[0]));
+        memcpy(crtc->gamma_green, randr_crtc->gammaGreen,
+               crtc->gamma_size * sizeof(crtc->gamma_green[0]));
+        memcpy(crtc->gamma_blue, randr_crtc->gammaBlue,
+               crtc->gamma_size * sizeof(crtc->gamma_blue[0]));
     }
 
+    xf86RandR12CrtcReloadGamma(randr_crtc);
+
     return TRUE;
 }
 
-- 
2.8.1

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to