Le 28.08.2006 18:10:37, Stefan Dösinger a écrit :
Do you mean the game releases the texture manually until it is destroyed??? Urgh. Can you verify that this doesn't come from DllMain() in dlls/ddraw/main.c?
Nop I checked, and anyway can't be because this occurs also when switching resolutions.
The msdn suggests that destroying the root destroys all sublevels, and it would be sane, because you create all surfaces with one call, so you should destroy them with one call.
If you are right, then every single ddraw application that works on wine now would leak memory on windows.
Well I don't understand, what leaks ? Complex attached surfaces are still destroyed when we fire the root. The new patch takes Moto Racer 2 memleak issues in hand, and Nomad Soul leaks may not be related to this — not a regression because exiting led to crash before ( and remaining surfaces are simple surfaces ). In fact i was a bit unfresh when i posted the patch :P ..
I suspect that something else, like a bad capatiblity flag, causes weird behavior by the app, so it behaves differently in wine then on windows, or that the real refcouning issue is that the front buffer shouldn't be destroyed when the app messes with the back buffer. The other thing could be that this application has an registry hack on windows: Windows XP has ddraw compatiblity regitry entries in HKEY_LOCAL_MACHINE\Software\Microsoft\DirectDraw\Compatiblitity. Can you check if you find Nomad Soul there? I have no idea what these entries mean, can you try to remove the whole compatiblity key and try nomad soul again? (well, backup first :-) )
Hmm I'll try as soon as I procure it. But first tell me if i misunderstood something ;-)
It is hard to prove that a surface is really destroyed or not, but you can write a regression test which accesses a back buffer which belongs to a complex back buffer / front buffer compound after the front buffer has been destroyed?