June 15, 2026
6:59 p.m.
If a requested controller slot is not currently open, rescan the controllers before reporting the slot as disconnected. This matches native Windows behaviour. The game RiME (and possible 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. -- v2: xinput1_3: Rescan controllers before reporting disconnection to callers. xinput1_3: Implement thread-safe controller addition and removal. https://gitlab.winehq.org/wine/wine/-/merge_requests/11158