Rémi Bernon : dinput: Fill the HID joystick object instance exponent and dimension.

Alexandre Julliard julliard at winehq.org
Wed Oct 6 15:51:38 CDT 2021


Module: wine
Branch: master
Commit: 4ce7ae4af16bdf36c9ba82aa12e5e7ddd0b69cf0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=4ce7ae4af16bdf36c9ba82aa12e5e7ddd0b69cf0

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Wed Oct  6 10:22:00 2021 +0200

dinput: Fill the HID joystick object instance exponent and dimension.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dinput/joystick_hid.c | 10 ++++++++++
 dlls/dinput8/tests/hid.c   | 42 ------------------------------------------
 2 files changed, 10 insertions(+), 42 deletions(-)

diff --git a/dlls/dinput/joystick_hid.c b/dlls/dinput/joystick_hid.c
index 1c7c54e20c9..2ef01ac6ace 100644
--- a/dlls/dinput/joystick_hid.c
+++ b/dlls/dinput/joystick_hid.c
@@ -348,6 +348,8 @@ static BOOL enum_objects( struct hid_joystick *impl, const DIPROPHEADER *header,
             instance.guidType = *object_usage_to_guid( instance.wUsagePage, instance.wUsage );
             instance.wReportId = caps->report_id;
             instance.wCollectionNumber = caps->link_collection;
+            instance.dwDimension = caps->units;
+            instance.wExponent = caps->units_exp;
             check_pid_effect_axis_caps( impl, &instance );
             ret = enum_object( impl, &filter, flags, callback, caps, &instance, data );
             if (ret != DIENUM_CONTINUE) return ret;
@@ -384,6 +386,8 @@ static BOOL enum_objects( struct hid_joystick *impl, const DIPROPHEADER *header,
             instance.guidType = *object_usage_to_guid( instance.wUsagePage, instance.wUsage );
             instance.wReportId = caps->report_id;
             instance.wCollectionNumber = caps->link_collection;
+            instance.dwDimension = caps->units;
+            instance.wExponent = caps->units_exp;
             ret = enum_object( impl, &filter, flags, callback, caps, &instance, data );
             if (ret != DIENUM_CONTINUE) return ret;
             button_ofs++;
@@ -417,6 +421,8 @@ static BOOL enum_objects( struct hid_joystick *impl, const DIPROPHEADER *header,
                 instance.guidType = GUID_Unknown;
                 instance.wReportId = nary->report_id;
                 instance.wCollectionNumber = nary->link_collection;
+                instance.dwDimension = caps->units;
+                instance.wExponent = caps->units_exp;
                 ret = enum_object( impl, &filter, flags, callback, nary, &instance, data );
                 if (ret != DIENUM_CONTINUE) return ret;
                 button_ofs++;
@@ -434,6 +440,8 @@ static BOOL enum_objects( struct hid_joystick *impl, const DIPROPHEADER *header,
             instance.guidType = GUID_Unknown;
             instance.wReportId = caps->report_id;
             instance.wCollectionNumber = caps->link_collection;
+            instance.dwDimension = caps->units;
+            instance.wExponent = caps->units_exp;
             ret = enum_object( impl, &filter, flags, callback, caps, &instance, data );
             if (ret != DIENUM_CONTINUE) return ret;
 
@@ -458,6 +466,8 @@ static BOOL enum_objects( struct hid_joystick *impl, const DIPROPHEADER *header,
             instance.guidType = *object_usage_to_guid( instance.wUsagePage, instance.wUsage );
             instance.wReportId = 0;
             instance.wCollectionNumber = node->parent;
+            instance.dwDimension = 0;
+            instance.wExponent = 0;
             ret = enum_object( impl, &filter, flags, callback, NULL, &instance, data );
             if (ret != DIENUM_CONTINUE) return ret;
         }
diff --git a/dlls/dinput8/tests/hid.c b/dlls/dinput8/tests/hid.c
index df0a07546fb..e55adb0aa56 100644
--- a/dlls/dinput8/tests/hid.c
+++ b/dlls/dinput8/tests/hid.c
@@ -3292,18 +3292,11 @@ static BOOL CALLBACK find_test_device( const DIDEVICEINSTANCEW *devinst, void *c
     return DIENUM_CONTINUE;
 }
 
-struct check_objects_todos
-{
-    BOOL dimension;
-    BOOL exponent;
-};
-
 struct check_objects_params
 {
     UINT index;
     UINT expect_count;
     const DIDEVICEOBJECTINSTANCEW *expect_objs;
-    const struct check_objects_todos *todo_objs;
 };
 
 static BOOL CALLBACK check_objects( const DIDEVICEOBJECTINSTANCEW *obj, void *args )
@@ -3311,7 +3304,6 @@ static BOOL CALLBACK check_objects( const DIDEVICEOBJECTINSTANCEW *obj, void *ar
     static const DIDEVICEOBJECTINSTANCEW unexpected_obj = {0};
     struct check_objects_params *params = args;
     const DIDEVICEOBJECTINSTANCEW *exp = params->expect_objs + params->index;
-    const struct check_objects_todos *todo = params->todo_objs + params->index;
 
     winetest_push_context( "obj[%d]", params->index );
 
@@ -3330,9 +3322,7 @@ static BOOL CALLBACK check_objects( const DIDEVICEOBJECTINSTANCEW *obj, void *ar
     check_member( *obj, *exp, "%u", wDesignatorIndex );
     check_member( *obj, *exp, "%#04x", wUsagePage );
     check_member( *obj, *exp, "%#04x", wUsage );
-    todo_wine_if( todo->dimension )
     check_member( *obj, *exp, "%#04x", dwDimension );
-    todo_wine_if( todo->exponent )
     check_member( *obj, *exp, "%#04x", wExponent );
     check_member( *obj, *exp, "%u", wReportId );
 
@@ -3652,14 +3642,12 @@ static void test_simple_joystick(void)
             .wUsage = HID_USAGE_GENERIC_JOYSTICK,
         },
     };
-    const struct check_objects_todos objects_todos[ARRAY_SIZE(expect_objects)] = {};
     const DIEFFECTINFOW expect_effects[] = {};
 
     struct check_objects_params check_objects_params =
     {
         .expect_count = ARRAY_SIZE(expect_objects),
         .expect_objs = expect_objects,
-        .todo_objs = objects_todos,
     };
     struct check_effects_params check_effects_params =
     {
@@ -6386,35 +6374,6 @@ static void test_force_feedback_joystick( void )
             .wUsage = PID_USAGE_SET_ENVELOPE_REPORT,
         },
     };
-    const struct check_objects_todos objects_todos[ARRAY_SIZE(expect_objects)] =
-    {
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {},
-        {.dimension = TRUE, .exponent = TRUE},
-        {.dimension = TRUE, .exponent = TRUE},
-        {},
-        {},
-        {},
-        {},
-        {.dimension = TRUE, .exponent = TRUE},
-        {.dimension = TRUE, .exponent = TRUE},
-    };
     const DIEFFECTINFOW expect_effects[] =
     {
         {
@@ -6443,7 +6402,6 @@ static void test_force_feedback_joystick( void )
     {
         .expect_count = ARRAY_SIZE(expect_objects),
         .expect_objs = expect_objects,
-        .todo_objs = objects_todos,
     };
     struct check_effects_params check_effects_params =
     {




More information about the wine-cvs mailing list