http://bugs.winehq.org/show_bug.cgi?id=27176
--- Comment #9 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2011-11-09 17:00:01 CST --- The problem is 2 fold: 1. GetCursorPos() does not return correct mouse position. For this game it constantly returns the same position over and over again. So something isn't updating it. 2. Dinput's mouse clipping interferes with real pointer position.
For 1) GetCursorPos() really does need to report real cursor position. The trick is in when it should be reported. Pulling cursor position from X is not an option, this will break apps that relay on this position updated with messages.
For 2) clipping cursor to 1x1 square is wrong. It have to be clipped to the entire application's window. And of course cursor should only be warped once on acquire.