Vitaliy Margolen : dinput: Initialize user limits with the default 0.. 65535 range. Add tests.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 5 07:45:09 CST 2007


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

Author: Vitaliy Margolen <wine-patches at kievinfo.com>
Date:   Fri Feb  2 00:47:19 2007 -0700

dinput: Initialize user limits with the default 0..65535 range. Add tests.

---

 dlls/dinput/joystick_linuxinput.c |    6 ++++--
 dlls/dinput/tests/joystick.c      |   14 ++++++++++++--
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c
index 0011398..12fcf6d 100644
--- a/dlls/dinput/joystick_linuxinput.c
+++ b/dlls/dinput/joystick_linuxinput.c
@@ -387,8 +387,10 @@ static JoystickImpl *alloc_device(REFGUI
 
         memcpy(&df->rgodf[idx], &c_dfDIJoystick2.rgodf[i], df->dwObjSize);
         newDevice->axes[i] = idx;
-        newDevice->props[idx].wantmin = newDevice->props[idx].havemin = newDevice->joydev->axes[i][AXIS_ABSMIN];
-        newDevice->props[idx].wantmax = newDevice->props[idx].havemax = newDevice->joydev->axes[i][AXIS_ABSMAX];
+        newDevice->props[idx].havemin = newDevice->joydev->axes[i][AXIS_ABSMIN];
+        newDevice->props[idx].havemax = newDevice->joydev->axes[i][AXIS_ABSMAX];
+        newDevice->props[idx].wantmin = 0;
+        newDevice->props[idx].wantmax = 0xffff;
         newDevice->props[idx].deadzone = 0;
         df->rgodf[idx++].dwType = DIDFT_MAKEINSTANCE(newDevice->numAxes++) | DIDFT_ABSAXIS;
     }
diff --git a/dlls/dinput/tests/joystick.c b/dlls/dinput/tests/joystick.c
index df12529..05be5d6 100644
--- a/dlls/dinput/tests/joystick.c
+++ b/dlls/dinput/tests/joystick.c
@@ -81,6 +81,7 @@ typedef struct tagJoystickInfo
     DWORD axis;
     DWORD pov;
     DWORD button;
+    LONG  lMin, lMax;
 } JoystickInfo;
 
 static BOOL CALLBACK EnumAxes(
@@ -102,8 +103,14 @@ static BOOL CALLBACK EnumAxes(
         diprg.diph.dwHeaderSize = sizeof(DIPROPHEADER);
         diprg.diph.dwHow        = DIPH_BYID;
         diprg.diph.dwObj        = pdidoi->dwType;
-        diprg.lMin              = -1000;
-        diprg.lMax              = +1000;
+
+        hr = IDirectInputDevice_GetProperty(info->pJoystick, DIPROP_RANGE, &diprg.diph);
+        ok(SUCCEEDED(hr), "IDirectInputDevice_GetProperty() failed: %s\n", DXGetErrorString8(hr));
+        ok(info->lMin == diprg.lMin && info->lMax == diprg.lMax, "Min/Max range invalid: "
+           "expected %d..%d got %d..%d\n", info->lMin, info->lMax, diprg.lMin, diprg.lMax);
+
+        diprg.lMin = -2000;
+        diprg.lMax = +2000;
 
         hr = IDirectInputDevice_SetProperty(info->pJoystick, DIPROP_RANGE, NULL);
         ok(hr==E_INVALIDARG,"IDirectInputDevice_SetProperty() should have returned "
@@ -239,6 +246,9 @@ static BOOL CALLBACK EnumJoysticks(
     ZeroMemory(&info, sizeof(info));
     info.pJoystick = pJoystick;
 
+    /* default min/max limits */
+    info.lMin = 0;
+    info.lMax = 0xffff;
     /* enumerate objects */
     hr = IDirectInputDevice_EnumObjects(pJoystick, EnumAxes, (VOID*)&info, DIDFT_ALL);
     ok(hr==DI_OK,"IDirectInputDevice_EnumObjects() failed: %s\n",




More information about the wine-cvs mailing list