[PATCH] xinput: Don't look for IG_ substring when searching for gamepads.
Piotr Caban
piotr at codeweavers.com
Thu May 16 07:57:28 CDT 2019
Hi Andrew,
Thanks for pointing it out. I will prepare a different patch.
Thanks,
Piotr
On 5/16/19 2:24 PM, Andrew Eikum wrote:
> On Thu, May 16, 2019 at 02:19:12PM +0200, Piotr Caban wrote:
>> Only some gamepads have "IG_" substring in DevicePath on Windows.
>>
>
> This might cause some games to show duplicate controllers. According
> to Microsoft, the correct way to detect when a dinput device also has
> an xinput device is to search for the IG_ substring. So if we create
> xinput devices for hardware that /doesn't/ have the IG_ string, the
> game will also show the dinput device.
>
> https://docs.microsoft.com/en-us/windows/desktop/xinput/xinput-and-directinput
>
> Andrew
>
>> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47209
>> Signed-off-by: Piotr Caban <piotr at codeweavers.com>
>> ---
>> dlls/xinput1_3/hid.c | 4 ----
>> 1 file changed, 4 deletions(-)
>>
>>
>
>> diff --git a/dlls/xinput1_3/hid.c b/dlls/xinput1_3/hid.c
>> index 34e4e51285..1912a10a39 100644
>> --- a/dlls/xinput1_3/hid.c
>> +++ b/dlls/xinput1_3/hid.c
>> @@ -233,14 +233,10 @@ void HID_find_gamepads(xinput_controller *devices)
>> while (SetupDiEnumDeviceInterfaces(device_info_set, NULL, &hid_guid, idx++,
>> &interface_data) && didx < XUSER_MAX_COUNT)
>> {
>> - static const WCHAR ig[] = {'I','G','_',0};
>> if (!SetupDiGetDeviceInterfaceDetailW(device_info_set,
>> &interface_data, data, sizeof(*data) + detail_size, NULL, NULL))
>> continue;
>>
>> - if (!strstrW(data->DevicePath, ig))
>> - continue;
>> -
>> for (i = 0; i < XUSER_MAX_COUNT; i++)
>> {
>> struct hid_platform_private *private = devices[i].platform_private;
>>
>
>>
>
More information about the wine-devel
mailing list