On Thu, Dec 1, 2016 at 3:29 PM, Andrew Eikum aeikum@codeweavers.com wrote:
On Thu, Dec 01, 2016 at 02:24:38PM -0200, Bruno Jesus wrote:
No, manually setting compatibility is not required in XP (that is why IMO its is a shim, more below). Just the game installer needs compatibility or it complains about unsupported OS.
I could not find any way to disable SuspendThread, I tried it back in [1] but got no replies, internet also did not help me at this subject.
[1] https://www.winehq.org/pipermail/wine-devel/2015-November/110308.html
To prove my point at [2] (source at [3]) there is a winmm_crosstest that calls SuspendThread inside the callback. If you run this at Windows >= XP it will get stuck. If you turn compatibility mode on it will pass as if nothing was called (tested on XP and 8).
[2] http://alexa.pro.br/~bruno/wine/winmm_crosstest.exe [3] http://alexa.pro.br/~bruno/wine/winmm.txt
If the game works without compat mode, but your test doesn't, then there must be something else going on here. I wish we understood better why it works.
I don't know what else to do, you can read some more at https://bugs.winehq.org/show_bug.cgi?id=3930#c18
You can also read the changelog of the DLL file http://www.radgametools.com/msshist.htm, especifically this (which could or not be related to the problem, and the games were shipped with old versions.): --------- Changes from 3.03c to 3.03d (11-22-1995)
Switched to a new thread synchronization technique which should fix deadlocking problems previously encountered by some 32-bit MSS applications. ---------
It would not be the first time Windows circumvents games problems. My patch is only touching Wine as configured for 9x, it brings no issues to the general user and makes Wine behave as 9x did. I cannot solve the mistery of how XP detects the game and avoids SuspendThread as my knowledge is limited and I believe it would require reverse engineering.
Best wishes, Bruno