Regression (SimCity 3000 is Broke )
Matthew Mastracci
matt at aclaro.com
Tue Mar 15 15:13:22 CST 2005
Tony Lambregts wrote:
> Matthew Mastracci wrote:
>
>> DDLOCK_NOSYSLOCK prevents DirectDraw from locking "system lock",
>> which is a global 16-bit lock on Windows 9x systems. I don't think
>> this is the right way to fix this.
>>
>> Check out this page here:
>>
>> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndxgen/html/dxfaq2.asp
>>
>>
>> This flag has no effect on Windows 2000 or Wine, since they don't
>> have global Win16 locks (AFAIK).
>>
> AFAICS The locking system that you have put in place is exactly that:
> a "system lock". Not "global 16-bit" perhaps but it definatly is a
> system lock.
The locking system is actually a per-surface lock. Basically,
DirectDraw under Windows requires you to lock a surface in memory before
blitting to it. Wine doesn't strictly enforce this locking requirement,
but some programs rely on the correct state behaviour.
> I am fairly familiar with how this program operates. It is the program
> itself that is calling the locks with this flag and this is the only
> way I can see it can work with the system that you have put into place.
>
> The bottom line here I have a problem with the locking system you have
> put into place since it breaks my favorite program. Please try the
> patch and see if it works for your program. If it does then we/I can
> work up a patch that works with your program and mine. If you are not
> willing to look at it am perfectly willing to submit a patch that
> removes your patch since it is clearly incorrect as it stands.
>
> Please let's work together on this.
I'm not trying to be difficult, don't worry. :)
I can take a look at it, but, as I mentioned earlier, I don't currently
have access to the machine to compile/test. Could you try out the
change I posted earlier that changes the locking behaviour when src ==
dest? I haven't seen any followup mentioning whether that worked or
not, but from what you've mentioned it sounds like it should solve the
problem. It's a pseudo-patch, but it should be pretty obvious which
part of the Blt() function to apply it to.
I'll cook up a patch to implement my locking behaviour fix in Blt and
BltFast, but it'll have to wait a couple of hours. I can also see if I
can find a demo version of SimCity 3000 to try out.
Matt.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matt.vcf
Type: text/x-vcard
Size: 287 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20050315/41b5cca2/matt.vcf
More information about the wine-devel
mailing list