-
cfa04ab7
by Rémi Bernon at 2026-06-18T19:54:38+02:00
xinput1_3: Move keystroke states and locks to check_for_keystroke.
Based on a patch from Shaun Ren.
-
02d1858d
by Rémi Bernon at 2026-06-18T19:54:40+02:00
xinput1_3: Read and write current state without the controller lock.
Based on a patch from Shaun Ren.
-
d0a05968
by Rémi Bernon at 2026-06-18T19:54:42+02:00
xinput1_3: Use a global critical section to guard device and enabled flag.
Based on a patch from Shaun Ren.
-
176f25a9
by Rémi Bernon at 2026-06-18T19:54:43+02:00
xinput1_3: Extend the CS to guard all device open / read / destroy.
Based on a patch from Shaun Ren.
-
4241f00f
by Shaun Ren at 2026-06-18T19:54:44+02:00
xinput1_3: Don't wait on overlapped event if CancelIoEx failed.
-
1b79d86f
by Shaun Ren at 2026-06-18T19:54:44+02:00
xinput1_3: Clear enabled when controller is destroyed on read error.
-
7c610708
by Shaun Ren at 2026-06-18T19:54:45+02:00
xinput1_3: Return FALSE from controller_init if device enable failed.
-
2b116971
by Shaun Ren at 2026-06-18T19:54:45+02:00
xinput1_3: Disable controller when removing an opened device.
-
2963e781
by Shaun Ren at 2026-06-18T19:54:45+02:00
xinput1_3: Rescan controllers before reporting disconnection to callers.
If a requested controller slot is not currently open, rescan the
controllers before reporting the slot as not connected. This matches
native Windows behaviour, which can be inferred from [1].
The game RiME (and possibly others), upon receiving a device addition
WM_DEVICECHANGE message, immediately queries all four slots with
XInputGetState(), and gives up if none are unavailable. Without the
rescan, the game's query can race with the xinput update thread and
cause hotplugging failure.
[1] https://learn.microsoft.com/en-us/windows/win32/xinput/getting-started-with-xinput#getting-controller-state