From: Etaash Mathamsetty etaash.mathamsetty@gmail.com
--- dlls/xinput1_3/main.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/dlls/xinput1_3/main.c b/dlls/xinput1_3/main.c index c4b2d5e871b..beba90b4b45 100644 --- a/dlls/xinput1_3/main.c +++ b/dlls/xinput1_3/main.c @@ -1086,25 +1086,17 @@ DWORD WINAPI DECLSPEC_HOTPATCH XInputGetKeystroke(DWORD index, DWORD reserved, P
DWORD WINAPI DECLSPEC_HOTPATCH XInputGetCapabilities(DWORD index, DWORD flags, XINPUT_CAPABILITIES *capabilities) { - TRACE("index %lu, flags %#lx, capabilities %p.\n", index, flags, capabilities); - - start_update_thread(); - - if (index >= XUSER_MAX_COUNT) return ERROR_BAD_ARGUMENTS; + XINPUT_CAPABILITIES_EX caps_ex; + DWORD ret;
- if (!controller_lock(&controllers[index])) return ERROR_DEVICE_NOT_CONNECTED; + ret = XInputGetCapabilitiesEx(0, index, flags, &caps_ex);
- if (flags & XINPUT_FLAG_GAMEPAD && controllers[index].caps.SubType != XINPUT_DEVSUBTYPE_GAMEPAD) + if (!ret) { - controller_unlock(&controllers[index]); - return ERROR_DEVICE_NOT_CONNECTED; + memcpy(capabilities, &caps_ex.Capabilities, sizeof(*capabilities)); }
- memcpy(capabilities, &controllers[index].caps, sizeof(*capabilities)); - - controller_unlock(&controllers[index]); - - return ERROR_SUCCESS; + return ret; }
DWORD WINAPI DECLSPEC_HOTPATCH XInputGetDSoundAudioDeviceGuids(DWORD index, GUID *render_guid, GUID *capture_guid)