http://bugs.winehq.org/show_bug.cgi?id=6086
--- Comment #57 from Janosch Machowinski jmachowinski@gmx.de 2009-01-06 19:24:23 --- after writing the last report, a friend and me got interested in how to debug this issue. After a short while we found something interesting. If you start wine with : WINEDEBUG=+ddraw wine Orion95.exe Everything works like a charm, even on slow (Pentium M at 600 mhz) machines. After digging a bit through the code, we found, that the TRACE calls in IDirectDrawSurfaceImpl_Lock and IDirectDrawSurfaceImpl_Unlock are the source of this behaviour. Adding a litte usleep in the lock funktion also works as a quickhack.
We digged further and found the source of this whole thing in the process_event function, which is called, but as long as the drawing thread never waits/blocks never gets events from XCheckIfEvent (count 0).
So there seems to be some strange race condition here. We also noticed, that this effect is not as devastating on multi core machines, as on single cores. So as long as you have an multiprocess system you will only notive a halting and not a freezing mouse pointer. During debug we missed timestamps on the debug messages, is there a way to add them ?
Any further ideas ?