Rémi Bernon : hidparse.sys: Output array caps data indexes in the correct order.

Alexandre Julliard julliard at winehq.org
Wed Sep 22 16:04:37 CDT 2021


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

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Wed Sep 22 10:08:34 2021 +0200

hidparse.sys: Output array caps data indexes in the correct order.

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

---

 dlls/dinput8/tests/hid.c | 2 --
 dlls/hidparse.sys/main.c | 4 ++--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/dlls/dinput8/tests/hid.c b/dlls/dinput8/tests/hid.c
index 2694391bc4e..d29cad5690f 100644
--- a/dlls/dinput8/tests/hid.c
+++ b/dlls/dinput8/tests/hid.c
@@ -3174,9 +3174,7 @@ static void test_hidp_kdr(void)
             check_member( kdr->caps[i], expect_caps[i], "%d", string_max );
             check_member( kdr->caps[i], expect_caps[i], "%d", designator_min );
             check_member( kdr->caps[i], expect_caps[i], "%d", designator_max );
-            todo_wine_if( !(kdr->caps[i].bit_field & 2) && !(kdr->caps[i].flags & HIDP_KDR_CAPS_IS_RANGE) )
             check_member( kdr->caps[i], expect_caps[i], "%#x", data_index_min );
-            todo_wine_if( !(kdr->caps[i].bit_field & 2) && !(kdr->caps[i].flags & HIDP_KDR_CAPS_IS_RANGE) )
             check_member( kdr->caps[i], expect_caps[i], "%#x", data_index_max );
             todo_wine_if( expect_caps[i].null_value )
             check_member( kdr->caps[i], expect_caps[i], "%d", null_value );
diff --git a/dlls/hidparse.sys/main.c b/dlls/hidparse.sys/main.c
index ca102765f93..f577ef952c3 100644
--- a/dlls/hidparse.sys/main.c
+++ b/dlls/hidparse.sys/main.c
@@ -384,9 +384,9 @@ static BOOL parse_new_value_caps( struct hid_parser_state *state, HIDP_REPORT_TY
     for (i = 0; i < usages_size; ++i)
     {
         if (!is_array) start_bit -= state->items.report_count * state->items.bit_size;
-        else if (i < usages_size - 1) state->items.flags |= HID_VALUE_CAPS_ARRAY_HAS_MORE;
+        else if (i) state->items.flags |= HID_VALUE_CAPS_ARRAY_HAS_MORE;
         else state->items.flags &= ~HID_VALUE_CAPS_ARRAY_HAS_MORE;
-        add_new_value_caps( state, values, i, start_bit );
+        add_new_value_caps( state, values, is_array ? usages_size - i - 1 : i, start_bit );
         if (!is_array) state->items.report_count = 1;
     }
     state->caps_count[type] += usages_size;




More information about the wine-cvs mailing list