From: Tuomas Räsänen tuomas.rasanen@opinsys.fi
--- dlls/winebus.sys/main.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/dlls/winebus.sys/main.c b/dlls/winebus.sys/main.c index b884162692f..1d3b07477c3 100644 --- a/dlls/winebus.sys/main.c +++ b/dlls/winebus.sys/main.c @@ -401,7 +401,7 @@ static DWORD check_bus_option(const WCHAR *option, DWORD default_value) return default_value; }
-static BOOL is_hidraw_enabled(WORD vid, WORD pid) +static BOOL is_hidraw_enabled(const struct device_desc *const desc) { char buffer[FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data[1024])]; KEY_VALUE_PARTIAL_INFORMATION *info = (KEY_VALUE_PARTIAL_INFORMATION *)buffer; @@ -410,19 +410,21 @@ static BOOL is_hidraw_enabled(WORD vid, WORD pid) UNICODE_STRING str; DWORD size;
+ if (!desc->is_hidraw) return FALSE; + if (check_bus_option(L"DisableHidraw", FALSE)) return FALSE;
if (!check_bus_option(L"Enable SDL", 1) && check_bus_option(L"DisableInput", 0)) prefer_hidraw = TRUE;
- if (is_dualshock4_gamepad(vid, pid)) prefer_hidraw = TRUE; - if (is_dualsense_gamepad(vid, pid)) prefer_hidraw = TRUE; + if (is_dualshock4_gamepad(desc->vid, desc->pid)) prefer_hidraw = TRUE; + if (is_dualsense_gamepad(desc->vid, desc->pid)) prefer_hidraw = TRUE;
RtlInitUnicodeString(&str, L"EnableHidraw"); if (!NtQueryValueKey(driver_key, &str, KeyValuePartialInformation, info, sizeof(buffer) - sizeof(WCHAR), &size)) { - UINT len = swprintf(vidpid, ARRAY_SIZE(vidpid), L"%04X:%04X", vid, pid); + UINT len = swprintf(vidpid, ARRAY_SIZE(vidpid), L"%04X:%04X", desc->vid, desc->pid); size -= FIELD_OFFSET(KEY_VALUE_PARTIAL_INFORMATION, Data[0]); tmp = (WCHAR *)info->Data;
@@ -620,7 +622,7 @@ static DWORD CALLBACK bus_main_thread(void *args) const struct device_desc *desc = &event->device_created.desc; if (!desc->is_hidraw) break; - if (!is_hidraw_enabled(desc->vid, desc->pid)) + if (!is_hidraw_enabled(desc)) { WARN("ignoring hidraw device %04x:%04x\n", desc->vid, desc->pid); break;