dinput: Clamp lMagnitude

Vincent Pelletier plr.vincent at gmail.com
Fri Jan 23 20:46:09 CST 2009


-- 
Vincent Pelletier
-------------- next part --------------
From 810776409d69af8a9f66539cfe65fd39494e3057 Mon Sep 17 00:00:00 2001
From: Vincent Pelletier <plr.vincent at gmail.com>
Date: Sat, 24 Jan 2009 03:45:11 +0100
Subject: Clamp lMagnitude into -10000..10000 range.
 Microsoft test application from DXSDK (FFConst) sends out of range values when approaching corners.

---
 dlls/dinput/effect_linuxinput.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/dlls/dinput/effect_linuxinput.c b/dlls/dinput/effect_linuxinput.c
index 225960d..9e3b5af 100644
--- a/dlls/dinput/effect_linuxinput.c
+++ b/dlls/dinput/effect_linuxinput.c
@@ -664,7 +664,7 @@ static HRESULT WINAPI LinuxInputEffectImpl_SetParameters(
             if (peff->cbTypeSpecificParams != sizeof(DICONSTANTFORCE))
                 return DIERR_INVALIDPARAM;
             tsp = (LPCDICONSTANTFORCE)(peff->lpvTypeSpecificParams);
-	    This->effect.u.constant.level = (tsp->lMagnitude / 10) * 32;
+	    This->effect.u.constant.level = (max(min(tsp->lMagnitude, 10000), -10000) / 10) * 32;
 	} else if (type == DIEFT_RAMPFORCE) {
             LPCDIRAMPFORCE tsp;
             if (peff->cbTypeSpecificParams != sizeof(DIRAMPFORCE))
-- 
1.5.6.5



More information about the wine-patches mailing list