https://bugs.winehq.org/show_bug.cgi?id=46142
--- Comment #13 from Ivan Kalvachev iive@yahoo.com --- (In reply to Kimmo Myllyvirta from comment #12)
Created attachment 62801 [details] fix for xinput1_3
Did some debugging;
<repeats thousands of times> 009e:009f:trace:xinput:XInputGetState (index 0, state 0x1434d0)! 009e:009f:trace:xinput:XInputGetState (index 0, state 0x143350)!
[...]
So, XInputGetState must not call XInputGetStateEx. Here's a quick fix, tested with Witcher 3 and Sprintires Mudrunner.
I can confirm that the proposed patch fixes the issue for me too. At least for these who use xinput1_3.
That was a good catch. I really can't believe I missed enabling +xinput verbosity. Well, at least from now on I will know that this stack error likely means infinite loop.
Thinking about that, it makes sense, as historically XInputGetState() is likely implemented first, so the *Ex() extended function would call the old one. But in wine the opposite happens.
Anyway, great work at solving the mystery!
Now only the D3D problem remains.