Empire Earth continued

Stefan Dösinger stefandoesinger at gmx.at
Thu Sep 8 11:05:29 CDT 2005

I think I've found the cause of the Empire Earth crash. This is not a 
reference counting problem at all, Empire Earth releases the DirectDraw and 
Surface objects on purpose. This is what happens:

1) EE creates a DDraw object
2) It attaches a Complex Surface
3) It sets up a D3D device for this Surface
4) EE performs a Flip(NULL, 0x20) on the surface
5) It Releases the DirectDraw object
6) It Releases the surface

Wine releases the surface in 5), Windows doesn't. It appears to me, that 
Windows doesn't release Surfaces which have a D3D object attached when the 
DDraw instance they belong to is freed.

I have written a small test app, which reproduces EEs behaviour. It crashes in 
Wine, but worksin Windows 2000. I'll do some more tests and submit a patch.


More information about the wine-devel mailing list