http://bugs.winehq.org/show_bug.cgi?id=6086
--- Comment #68 from Pierre Willenbrock pierre@pirsoft.de 2009-01-20 15:45:35 --- I think this has not been said clearly enough: For me(and Janosch), the hanging cursor-problem gets better _when_ we use multiple cpu cores. It only manifests itself in "cursor moves only every other minute" if wine is restricted to a single cpu. Otherwise, one gets a jumpy, but otherwise working cursor. The reason for this can be easily seen: the message thread gets more time to actually handle messages.
I guess this happens: The kernel scheduler immediately schedules the drawing thread after its WM_USER+1 message comes back from the message thread, and completes so fast, that the next time the message thread runs and looks for messages, there is another WM_USER+1 message asking for swap. This happens inside the second nested GetMessage, and only the outer one processes WM_MOUSEMOVEs, so there is not much that can be done from inside GetMessage.