http://bugs.winehq.org/show_bug.cgi?id=31702
--- Comment #2 from voidcastr cephryx@gmx.net 2012-09-16 09:17:34 CDT --- To reprhase the original bug description a bit:
In the problematic case, the invisible cursor simply seems to move... until it hits the edge of the screen. It goes invisible when holding down a mouse button and it properly reappears at the original position in BOTH alternating cases (the buggy and the correct one) when releasing the button.
Guild Wars 2 does not use raw mouse input all the time, but only when a mouse button is held down and the mouse is moved. The game basically enters and quits raw mouse input mode. Thus, there must be some logic within wine's input system that is triggered when initializing raw input... either this logic or the one processing an actual "raw mouse move event" malfunctions preceisely every second time, not causing an expected suppression of the cursor's movement. Because this suppression always works in the first attempt, I suspect a missing reset of some variable, some kind of wrong state being set, a missing increment of a pointer, a lack of removing an event from a queue... or something like that.
I already had a look into the code but to me it's not easy to identify the part responsible for this, since I do not know much about wine's input message processing and it's quite hard to figure it out from scratch / on my own.
-> So... help pls! :)