Rémi Bernon : hid: Rewrite HidP_Get*Caps using HidP_GetSpecific*Caps.
Alexandre Julliard
julliard at winehq.org
Wed Jun 23 16:10:10 CDT 2021
Module: wine
Branch: master
Commit: e5b636c05639f8517f1b5a1fe248d3767cafef47
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e5b636c05639f8517f1b5a1fe248d3767cafef47
Author: Rémi Bernon <rbernon at codeweavers.com>
Date: Mon Jun 21 09:05:21 2021 +0200
hid: Rewrite HidP_Get*Caps using HidP_GetSpecific*Caps.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/hid/hidp.c | 113 +++-----------------------------------------------------
1 file changed, 6 insertions(+), 107 deletions(-)
diff --git a/dlls/hid/hidp.c b/dlls/hid/hidp.c
index 9eedf12b694..168461d99c9 100644
--- a/dlls/hid/hidp.c
+++ b/dlls/hid/hidp.c
@@ -156,63 +156,12 @@ static NTSTATUS get_report_data_array(BYTE *report, UINT reportLength, UINT star
return HIDP_STATUS_SUCCESS;
}
-
-NTSTATUS WINAPI HidP_GetButtonCaps(HIDP_REPORT_TYPE ReportType, PHIDP_BUTTON_CAPS ButtonCaps,
- PUSHORT ButtonCapsLength, PHIDP_PREPARSED_DATA PreparsedData)
+NTSTATUS WINAPI HidP_GetButtonCaps( HIDP_REPORT_TYPE report_type, HIDP_BUTTON_CAPS *caps, USHORT *caps_count,
+ PHIDP_PREPARSED_DATA preparsed_data )
{
- PWINE_HIDP_PREPARSED_DATA data = (PWINE_HIDP_PREPARSED_DATA)PreparsedData;
- WINE_HID_ELEMENT *elems = HID_ELEMS(data);
- WINE_HID_REPORT *report = NULL;
- USHORT b_count = 0, r_count = 0;
- int i,j,u;
-
- TRACE("(%i, %p, %p, %p)\n",ReportType, ButtonCaps, ButtonCapsLength, PreparsedData);
-
- if (data->magic != HID_MAGIC)
- return HIDP_STATUS_INVALID_PREPARSED_DATA;
-
- switch(ReportType)
- {
- case HidP_Input:
- b_count = data->caps.NumberInputButtonCaps;
- report = HID_INPUT_REPORTS(data);
- break;
- case HidP_Output:
- b_count = data->caps.NumberOutputButtonCaps;
- report = HID_OUTPUT_REPORTS(data);
- break;
- case HidP_Feature:
- b_count = data->caps.NumberFeatureButtonCaps;
- report = HID_FEATURE_REPORTS(data);
- break;
- default:
- return HIDP_STATUS_INVALID_REPORT_TYPE;
- }
- r_count = data->reportCount[ReportType];
-
- if (!r_count || !b_count)
- {
- *ButtonCapsLength = 0;
- return HIDP_STATUS_SUCCESS;
- }
-
- b_count = min(b_count, *ButtonCapsLength);
-
- u = 0;
- for (j = 0; j < r_count && u < b_count; j++)
- {
- for (i = 0; i < report[j].elementCount && u < b_count; i++)
- {
- if (elems[report[j].elementIdx + i].caps.BitSize == 1)
- ButtonCaps[u++] = *(HIDP_BUTTON_CAPS *)&elems[report[j].elementIdx + i].caps;
- }
- }
-
- *ButtonCapsLength = b_count;
- return HIDP_STATUS_SUCCESS;
+ return HidP_GetSpecificButtonCaps( report_type, 0, 0, 0, caps, caps_count, preparsed_data );
}
-
NTSTATUS WINAPI HidP_GetCaps(PHIDP_PREPARSED_DATA PreparsedData,
PHIDP_CAPS Capabilities)
{
@@ -467,60 +416,10 @@ NTSTATUS WINAPI HidP_GetUsages(HIDP_REPORT_TYPE ReportType, USAGE UsagePage, USH
return HIDP_STATUS_SUCCESS;
}
-
-NTSTATUS WINAPI HidP_GetValueCaps(HIDP_REPORT_TYPE ReportType, PHIDP_VALUE_CAPS ValueCaps,
- PUSHORT ValueCapsLength, PHIDP_PREPARSED_DATA PreparsedData)
+NTSTATUS WINAPI HidP_GetValueCaps( HIDP_REPORT_TYPE report_type, HIDP_VALUE_CAPS *caps, USHORT *caps_count,
+ PHIDP_PREPARSED_DATA preparsed_data )
{
- PWINE_HIDP_PREPARSED_DATA data = (PWINE_HIDP_PREPARSED_DATA)PreparsedData;
- WINE_HID_ELEMENT *elems = HID_ELEMS(data);
- WINE_HID_REPORT *report = NULL;
- USHORT v_count = 0, r_count = 0;
- int i,j,u;
-
- TRACE("(%i, %p, %p, %p)\n", ReportType, ValueCaps, ValueCapsLength, PreparsedData);
-
- if (data->magic != HID_MAGIC)
- return HIDP_STATUS_INVALID_PREPARSED_DATA;
-
- switch(ReportType)
- {
- case HidP_Input:
- v_count = data->caps.NumberInputValueCaps;
- report = HID_INPUT_REPORTS(data);
- break;
- case HidP_Output:
- v_count = data->caps.NumberOutputValueCaps;
- report = HID_OUTPUT_REPORTS(data);
- break;
- case HidP_Feature:
- v_count = data->caps.NumberFeatureValueCaps;
- report = HID_FEATURE_REPORTS(data);
- break;
- default:
- return HIDP_STATUS_INVALID_REPORT_TYPE;
- }
- r_count = data->reportCount[ReportType];
-
- if (!r_count || !v_count)
- {
- *ValueCapsLength = 0;
- return HIDP_STATUS_SUCCESS;
- }
-
- v_count = min(v_count, *ValueCapsLength);
-
- u = 0;
- for (j = 0; j < r_count && u < v_count; j++)
- {
- for (i = 0; i < report[j].elementCount && u < v_count; i++)
- {
- if (elems[report[j].elementIdx + i].caps.BitSize != 1)
- ValueCaps[u++] = elems[report[j].elementIdx + i].caps;
- }
- }
-
- *ValueCapsLength = v_count;
- return HIDP_STATUS_SUCCESS;
+ return HidP_GetSpecificValueCaps( report_type, 0, 0, 0, caps, caps_count, preparsed_data );
}
NTSTATUS WINAPI HidP_InitializeReportForID(HIDP_REPORT_TYPE ReportType, UCHAR ReportID,
More information about the wine-cvs
mailing list