Rémi Bernon : dinput: Call hid_joystick_enum_device directly in EnumDevicesBySemantics.
Alexandre Julliard
julliard at winehq.org
Tue Oct 26 16:19:18 CDT 2021
Module: wine
Branch: master
Commit: 5726c77faa5962504632f1e19813588dedcfc692
URL: https://source.winehq.org/git/wine.git/?a=commit;h=5726c77faa5962504632f1e19813588dedcfc692
Author: Rémi Bernon <rbernon at codeweavers.com>
Date: Tue Oct 26 09:17:30 2021 +0200
dinput: Call hid_joystick_enum_device directly in EnumDevicesBySemantics.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dinput/dinput_main.c | 30 ++++++++++--------------------
1 file changed, 10 insertions(+), 20 deletions(-)
diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
index ffa78be2fb5..745fdafa920 100644
--- a/dlls/dinput/dinput_main.c
+++ b/dlls/dinput/dinput_main.c
@@ -762,7 +762,8 @@ static HRESULT WINAPI IDirectInput8WImpl_EnumDevicesBySemantics(
DIDEVICEINSTANCEW didevi;
LPDIRECTINPUTDEVICE8W lpdid;
DWORD callbackFlags;
- int i, j;
+ unsigned int i = 0;
+ HRESULT hr;
int device_count = 0;
int remain;
DIDEVICEINSTANCEW *didevis = 0;
@@ -772,28 +773,17 @@ static HRESULT WINAPI IDirectInput8WImpl_EnumDevicesBySemantics(
didevi.dwSize = sizeof(didevi);
- /* Enumerate all the joysticks */
- for (i = 0; i < ARRAY_SIZE(dinput_devices); i++)
+ do
{
- HRESULT enumSuccess;
-
- if (!dinput_devices[i]->enum_device) continue;
-
- for (j = 0, enumSuccess = S_OK; SUCCEEDED(enumSuccess); j++)
+ hr = hid_joystick_enum_device( DI8DEVCLASS_GAMECTRL, DIEDFL_ATTACHEDONLY | dwFlags, &didevi, This->dwVersion, i++ );
+ if (hr != DI_OK) continue;
+ if (should_enumerate_device( ptszUserName, dwFlags, &This->device_players, &didevi.guidInstance ))
{
- TRACE(" - checking device %u ('%s')\n", i, dinput_devices[i]->name);
-
- /* Default behavior is to enumerate attached game controllers */
- enumSuccess = dinput_devices[i]->enum_device(DI8DEVCLASS_GAMECTRL, DIEDFL_ATTACHEDONLY | dwFlags, &didevi, This->dwVersion, j);
- if (enumSuccess == S_OK &&
- should_enumerate_device(ptszUserName, dwFlags, &This->device_players, &didevi.guidInstance))
- {
- device_count++;
- didevis = realloc( didevis, sizeof(DIDEVICEINSTANCEW) * device_count );
- didevis[device_count-1] = didevi;
- }
+ device_count++;
+ didevis = realloc( didevis, sizeof(DIDEVICEINSTANCEW) * device_count );
+ didevis[device_count - 1] = didevi;
}
- }
+ } while (SUCCEEDED(hr));
remain = device_count;
/* Add keyboard and mouse to remaining device count */
More information about the wine-cvs
mailing list