xserver: Branch 'master'

Maarten Maathuis madman2003 at kemper.freedesktop.org
Mon Dec 22 10:54:29 PST 2008


 hw/xfree86/modes/xf86Crtc.c |   13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

New commits:
commit b5736d237a21d5e65d839c4d213dd3bda5a11e9d
Author: Maarten Maathuis <madman2003 at gmail.com>
Date:   Mon Dec 22 19:53:14 2008 +0100

    randr/xfree86: Fix initial gamma computation.
    
    - The previous version overflowed sometimes.

diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index fdbd385..cb13deb 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -2248,24 +2248,23 @@ xf86CrtcSetInitialGamma(xf86CrtcPtr crtc, float gamma_red, float gamma_green,
      * So take the default gamma size for lack of something better.
      */
     for (i = 0; i < size; i++) {
-        /* Code partially borrowed from ComputeGamma(). */
         if (gamma_red == 1.0)
             red[i] = i << 8;
         else
-            red[i] = (CARD16)((pow((double)i/(double)size,
-                        gamma_red) * (double)size + 0.5)*256);
+            red[i] = (CARD16)(pow((double)i/(double)(size - 1),
+			(double)gamma_red) * (double)(size - 1) * 256);
 
         if (gamma_green == 1.0)
             green[i] = i << 8;
         else
-            green[i] = (CARD16)((pow((double)i/(double)size,
-                        gamma_green) * (double)size + 0.5)*256);
+            green[i] = (CARD16)(pow((double)i/(double)(size - 1),
+			(double)gamma_green) * (double)(size - 1) * 256);
 
         if (gamma_blue == 1.0)
             blue[i] = i << 8;
         else
-            blue[i] = (CARD16)((pow((double)i/(double)size,
-                        gamma_blue) * (double)size + 0.5)*256);
+            blue[i] = (CARD16)(pow((double)i/(double)(size - 1),
+			(double)gamma_blue) * (double)(size - 1) * 256);
     }
 
     /* Default size is 256, so anything else is failure. */


More information about the xorg-commit mailing list