Put together an implementation. Works good on my hardware. Here were the required changes
dinput
- always DIERR_ACQUIRED if trying to set autocenter and acquired
- send a stop to all effects on acquire if autocenter is off
bus{sdl,udev}
- enable autocenter on reset
- disable autocenter on stop all effects
https://gitlab.winehq.org/wine/wine/-/merge_requests/4830
The prior code didn't DIERR_ACQUIRED if it was in exclusive mode, but Windows does. This behaviour is what makes it easy to implement as it means you only have to deal with autocenter during an acquire where you can just do a stop all effects as only autocenter is running.