Module: wine Branch: master Commit: 51fac7f28a8144d5d3dcf63d633a65aaf7a27e22 URL: http://source.winehq.org/git/wine.git/?a=commit;h=51fac7f28a8144d5d3dcf63d63...
Author: Vitaliy Margolen wine-patches@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;