dinput: Fix POV for programs that use buffered events.
authorVitaliy Margolen <wine-patches@kievinfo.com>
Fri, 11 Sep 2009 05:03:47 +0000 (23:03 -0600)
committerAlexandre Julliard <julliard@winehq.org>
Fri, 11 Sep 2009 10:14:25 +0000 (12:14 +0200)
dlls/dinput/joystick_linux.c
dlls/dinput/joystick_linuxinput.c

index bf31eafa01a19f0efdf5ead9911d8df513496b3d..2203a20fc4d29f95124d9c787e16cadd9b8e97dd 100644 (file)
@@ -582,7 +582,8 @@ static void joy_polldev(JoystickGenericImpl *This_in) {
             int number = This->generic.axis_map[jse.number];   /* wine format object index */
 
             if (number < 0) return;
-            inst_id = DIDFT_MAKEINSTANCE(number) | (number < 8 ? DIDFT_ABSAXIS : DIDFT_POV);
+            inst_id = number < 8 ?  DIDFT_MAKEINSTANCE(number) | DIDFT_ABSAXIS :
+                                    DIDFT_MAKEINSTANCE(number - 8) | DIDFT_POV;
             value = joystick_map_axis(&This->generic.props[id_to_object(This->generic.base.data_format.wine_df, inst_id)], jse.value);
 
             TRACE("changing axis %d => %d\n", jse.number, number);
index 42daaebbeefbda54c5ce2198f5ac9ad16af9b546..67a1ee38797f7e2cffbe2e816f093a5d10228c28 100644 (file)
@@ -779,7 +779,8 @@ static void joy_polldev(JoystickGenericImpl *iface)
             axis = This->generic.axis_map[axis];
             if (axis < 0) break;
 
-            inst_id = DIDFT_MAKEINSTANCE(axis) | (axis < 8 ? DIDFT_ABSAXIS : DIDFT_POV);
+            inst_id = axis < 8 ?  DIDFT_MAKEINSTANCE(axis) | DIDFT_ABSAXIS :
+                                  DIDFT_MAKEINSTANCE(axis - 8) | DIDFT_POV;
             value = joystick_map_axis(&This->generic.props[id_to_object(This->generic.base.data_format.wine_df, inst_id)], ie.value);
 
            switch (axis) {