xserver: Branch 'server-1.7-branch'

Julien Cristau jcristau at kemper.freedesktop.org
Mon Mar 7 03:17:41 PST 2011


 hw/xfree86/common/xf86Xinput.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

New commits:
commit ee8664ee8573d810a8768a2e10dd896b630697ff
Author: Benjamin Tissoires <tissoire at cena.fr>
Date:   Wed Apr 14 17:27:51 2010 +0200

    xf86ScaleAxis: support for high resolution devices
    
    High resolution devices was generating integer overflow.
    For instance the wacom Cintiq 21UX has an axis value up to
    87000. Thus the term (dSx * (Cx - Rxlow)) is greater than
    MAX_INT32.
    
    Using 64bits integer avoids such problem.
    
    Signed-off-by: Philippe Ribet <ribet at cena.fr>
    Signed-off-by: Benjamin Tissoires <tissoire at cena.fr>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit a780e5b3638a0ff81301fc68aca15b47ba0befb7)

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index f637cfe..2b9c974 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -79,6 +79,7 @@
 #include "windowstr.h"	/* screenIsSaved */
 
 #include <stdarg.h>
+#include <stdint.h>          /* for int64_t */
 
 #include <X11/Xpoll.h>
 
@@ -978,12 +979,11 @@ xf86ScaleAxis(int	Cx,
               int	Rxlow )
 {
     int X;
-    int dSx = Sxhigh - Sxlow;
-    int dRx = Rxhigh - Rxlow;
+    int64_t dSx = Sxhigh - Sxlow;
+    int64_t dRx = Rxhigh - Rxlow;
 
-    dSx = Sxhigh - Sxlow;
     if (dRx) {
-	X = ((dSx * (Cx - Rxlow)) / dRx) + Sxlow;
+	X = (int)(((dSx * (Cx - Rxlow)) / dRx) + Sxlow);
     }
     else {
 	X = 0;


More information about the xorg-commit mailing list