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