Bug #829 triggers lock-up in Baldur's Gate

Tony Lambregts tony_lambregts at telusplanet.net
Sun Jun 30 22:14:26 CDT 2002

Ian D. Stewart wrote:

>Hash: SHA1
>On Sunday 30 June 2002 20:02, Tony Lambregts wrote:
>>Ian D. Stewart wrote:
>>>After further research, it looks as if the lock-up in Baldur's Gate is
>>>being triggered by an unsupported API Call.
>>>Here is the pertinent error message from Wine:
>>>	fixme:ddraw:DIB_DirectDrawSurface_Blt dwFlags DDBLT_WAIT and/or
>>>DDBLT_ASYNC: can't handle right now.
>>>This fixme is only encountered during game 'movies' (including resting and
>>>death scenes).
>>>I have a full logfile if anyone is interested.
>>I am inclined to think that what is causing Baldur's Gate is not this
>>but something else.  The way that DDBLT_WAIT and DDBLT_ASYNC are handled
>>is unlikely to cause a crash. However in order to determine if it is
>>related I would be interested in the last 1000 lines of the trace. (for
>Thanx for looking at this.  I've attached the last 1000 lines from the log 
>file.  The log file was generated by running wine --debugmsg warn+ddraw.  I 
>can also generate a trace+relay for you if you think it will help, but as I 
>mentioned in a previous e-mail, this particular combination hides the bug.
>Version: GnuPG v1.0.7 (GNU/Linux)
>err:ddraw:Main_DirectDrawSurface_Lock  Negative values in LPRECT !!!
>err:ddraw:Main_DirectDrawSurface_Lock  Negative values in LPRECT !!!
I don't know for sure that direct draw is what is locking it up, but 
this is not good. and could very well be why the program lock up.  Why 
don't you start a bug report in bugzilla for this error and we can see 
if we can fix this first. Please include the steps to recreate the bug  
what you see/happens as well as what you expected to see/happen.

>fixme:ddraw:DIB_DirectDrawSurface_Blt 	Unsupported flags: DDBLT_DDFX 
>fixme:ddraw:DIB_DirectDrawSurface_Blt 	Unsupported flags: DDBLT_DDFX 
While we are at it we need to fix this too.  So  if you could be so kind 
as to make a bug report for this one for this too.  I will see what I can do
msdn has this to say about DD_BLT_DDFX

>     Uses the *dwDDFX* member of the *DDBLTFX*
>     <http://msdn.microsoft.com/archive/en-us/ddraw7/directdraw7/ddref_0xmf.asp>
> structure to specify the effects to use for this blit.
and these are the possible effects that need to be covered.  of course 
 we can only fix what we can test so  it probably is only a subset of this .

> *dwDDFX*
>     Type of FX operations. The following types are defined:
>         Uses arithmetic stretching
>         <http://msdn.microsoft.com/archive/en-us/ddraw7/directdraw7/glossary_459v.asp#_dx_stretching_glos>
>     along the y-axis for this blit. DDBLTFX_MIRRORLEFTRIGHT
>         Turns the surface on its y-axis. This blit mirrors the surface
>     from left to right. DDBLTFX_MIRRORUPDOWN
>         Turns the surface on its x-axis. This blit mirrors the surface
>     from top to bottom. DDBLTFX_NOTEARING
>         Schedules this blit to avoid tearing
>         <http://msdn.microsoft.com/archive/en-us/ddraw7/directdraw7/glossary_85rn.asp#_dx_tearing_glos>.
>     Rotates the surface 180 degrees clockwise during this blit.
>     Rotates the surface 270 degrees clockwise during this blit.
>     Rotates the surface 90 degrees clockwise during this blit.
>         Adds the *dwZBufferBaseDest* member to each of the source
>         z-values before comparing them with the destination z-values
>     during this z-blit. DDBLTFX_ZBUFFERRANGE
>         Uses the *dwZBufferLow* and *dwZBufferHigh* members as range
>         values to specify limits to the bits copied from a source
>     surface during this z-blit.
Submit the bugs and lets see what can be done.

Tony  Lambregts

More information about the wine-devel mailing list