Zebediah Figura : hid: Scale from logical t o physical coördinates in HidP_GetScaledUsageValue().
Module: wine Branch: master Commit: 6ca21b56b43e1f843c4997eed4775096f0d92a57 URL: https://source.winehq.org/git/wine.git/?a=commit;h=6ca21b56b43e1f843c4997eed... Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Tue Feb 12 00:06:04 2019 -0600 hid: Scale from logical to physical coördinates in HidP_GetScaledUsageValue(). Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Aric Stewart <aric(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/hid/hidp.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/dlls/hid/hidp.c b/dlls/hid/hidp.c index ac5f222..7c58426 100644 --- a/dlls/hid/hidp.c +++ b/dlls/hid/hidp.c @@ -272,6 +272,18 @@ static LONG sign_extend(ULONG value, const WINE_HID_ELEMENT *element) return value; } +static LONG logical_to_physical(LONG value, const WINE_HID_ELEMENT *element) +{ + if (element->caps.value.PhysicalMin || element->caps.value.PhysicalMax) + { + value = (((ULONGLONG)(value - element->caps.value.LogicalMin) + * (element->caps.value.PhysicalMax - element->caps.value.PhysicalMin)) + / (element->caps.value.LogicalMax - element->caps.value.LogicalMin)) + + element->caps.value.PhysicalMin; + } + return value; +} + NTSTATUS WINAPI HidP_GetScaledUsageValue(HIDP_REPORT_TYPE ReportType, USAGE UsagePage, USHORT LinkCollection, USAGE Usage, PLONG UsageValue, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength) @@ -290,7 +302,7 @@ NTSTATUS WINAPI HidP_GetScaledUsageValue(HIDP_REPORT_TYPE ReportType, USAGE Usag element->valueStartBit, element->bitCount, &rawValue); if (rc != HIDP_STATUS_SUCCESS) return rc; - *UsageValue = sign_extend(rawValue, element); + *UsageValue = logical_to_physical(sign_extend(rawValue, element), element); } return rc;
participants (1)
-
Alexandre Julliard