Vitaliy Margolen : dinput: Fix dead zone calculation.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Aug 15 04:34:00 CDT 2007


Module: wine
Branch: master
Commit: 51fac7f28a8144d5d3dcf63d633a65aaf7a27e22
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=51fac7f28a8144d5d3dcf63d633a65aaf7a27e22

Author: Vitaliy Margolen <wine-patches at kievinfo.com>
Date:   Tue Aug 14 07:04:42 2007 -0600

dinput: Fix dead zone calculation.

Based on patch by Artur Szymiec.

---

 dlls/dinput/joystick_linuxinput.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c
index 21b77d6..feeb118 100644
--- a/dlls/dinput/joystick_linuxinput.c
+++ b/dlls/dinput/joystick_linuxinput.c
@@ -91,17 +91,20 @@ DWORD joystick_map_pov(POINTL *p)
 LONG joystick_map_axis(ObjProps *props, int val)
 {
     LONG ret;
+    LONG center = (props->lMax - props->lMin) / 2;
 
     /* map the value from the hmin-hmax range into the wmin-wmax range */
     ret = MulDiv( val - props->lDevMin, props->lMax - props->lMin,
-                  props->lDevMax - props->lDevMin ) + props->lMin;
+                  props->lDevMax - props->lDevMin );
 
-    if ((ret >= -props->lDeadZone / 2 ) && (ret <= props->lDeadZone / 2))
-        ret = (props->lMax - props->lMin) / 2  + props->lMin;
+    if (abs( ret - center ) <= props->lDeadZone / 2 )
+        ret = center;
+
+    ret += props->lMin;
 
     TRACE( "(%d %d) -> (%d <%d> %d): val=%d ret=%d\n",
            props->lDevMin, props->lDevMax,
-           props->lMin, props->lDeadZone, props->lDevMax,
+           props->lMin, props->lDeadZone, props->lMax,
            val, ret );
 
     return ret;




More information about the wine-cvs mailing list