Regression (SimCity 3000 is Broke )
Matthew Mastracci
matt at aclaro.com
Tue Mar 15 10:08:06 CST 2005
(removing Paul from CC)
I think the problem is that we lock both the src and dest surfaces,
without checking to see if they are the same. I think we then try to
lock both surfaces and one of the locks fails.
Perhaps this might be a better solution:
if (src == iface) {
DD_STRUCT_INIT(&ddesc);
DD_STRUCT_INIT(&sdesc);
IDirectDrawSurface7_Lock(iface,NULL,&ddesc,0,0);
DD_STRUCT_COPY_BYSIZE(&ddesc,&sdesc);
} else {
DD_STRUCT_INIT(&ddesc);
DD_STRUCT_INIT(&sdesc);
sdesc.dwSize = sizeof(sdesc);
if (src) IDirectDrawSurface7_Lock(src, NULL, &sdesc,
DDLOCK_READONLY, 0);
ddesc.dwSize = sizeof(ddesc);
IDirectDrawSurface7_Lock(iface,NULL,&ddesc,DDLOCK_WRITEONLY,0);
}
I don't have access to my box with my Wine tree right now so I don't
know if this will compile. Note that the fix will need to be done for
both _Blt() and _BltFast().
Paul Vriens wrote:
>On Tue, 2005-03-15 at 07:35, Tony Lambregts wrote:
>
>
>>After working prefectly for over 2 years SimCity 3000 is broken.
>>
>>The patch that broke it is http://www.winehq.org/hypermail/wine-cvs/2005/03/0098.html
>>
>>basicly the problem is simple. The source and the destination are both the same surface in DIB_DirectDrawSurface_Blt() and with the
>>new locking in place the destination never gets updated. So althought it might fix Picasa2 it is definatly not correct.
>>
>>--
>>
>>Tony Lambregts
>>
>>
>>
>Hi Tony,
>
>I don't know why I'm cc-ed. I only fixed another regression ;-). I don't
>known anything about locking, so Matt?
>
>Cheers,
>
>Paul.
>
>
>
-------------- 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/39a8ffea/matt.vcf
More information about the wine-devel
mailing list