http://bugs.winehq.org/show_bug.cgi?id=29168
--- Comment #138 from Xolotl Loki xoloki@gmail.com 2012-03-08 22:27:10 CST --- I've been playing with Carsten's patch all week, but I keep seeing a random UI freeze that lasts anywhere from 1 to 60 seconds. The game plays normally for a while (sometimes hours), but once it starts freezing it does so too often to continue playing.
Has anyone else seen, and/or worked around this issue? I thought it might be because Carsten's patch doesn't appear to set the time fields in the proper order; from what I read, it should be done like
user_shared_data->SystemTime.High2Time = now.HighPart; user_shared_data->SystemTime.LowPart = now.LowPart; user_shared_data->SystemTime.High1Time = now.HighPart;
rather than
user_shared_data->SystemTime.LowPart = now.LowPart; user_shared_data->SystemTime.High1Time = user_shared_data->SystemTime.High2Time = now.HighPart;
But that didn't solve the freezing. So I've been working on an alternate patch using NtSetTimer to set the times at a regular interval. However, I can't get past the 8995 server handshake. I'll post the patch if I get it working.
In the meantime, a question: does anyone know what the scope is of the user_shared_data memory area? Is it local to the thread/process, or is it shared? Every thread reserves it then writes to it in thread_init.