Am Mittwoch 05 Juli 2006 18:27 schrieb Stefan Dösinger: > Am Mittwoch 05 Juli 2006 02:27 schrieb Stefan Dösinger: > > The DirectDraw reference counting is a bit more complex than it seemed at > > first. The unit test in that patch shows that the IDirectDraw, > > IDirectDraw2, IDirectDraw4 and IDirectDraw7 interfaces of one object have > > their own reference count. The object is the same, the test with > > SetCooperativeLevel shows this(Setting a focus window returns an error in > > exclusive mode). Interestingly the IDirect3DX interfaces do not have > > their own refcount, instead they are linked to a DirectDraw interface > > refcount. > > > > This patch splits up the IDirectDrawImpl::ref member in ref7, ref4, ref2 > > and ref1 and changes the AddRef and Release methods accordingly. Of > > course a number of tests to show this behavior are included :-) > > > > I will also send a patch which fixes some reference counting issues with > > Palettes, and both patches depend on each other. So please apply either > > both patches or none of them if one is wrong. > > > > ChangeLog: > > Stefan Dösinger: Split the ddraw refcount > > Here is an updated patch, it implements the destroy condition as suggested > by Rob and adds the accidentally dropped SetCooperativeLevel(NULL, > DDSCL_NORMAL) cooplevel and screen mode restoring call. Oh wait, this is not necessarilly correct. Considered that Direct3D came with DirectX 3.0 (I think) IDirect3D(1) isn't necessarily linked to IDirectDraw(1).
I will add some more tests to check for that, do not apply this patch for now
pgpiFO78bK8Lm.pgp
Description: PGP signature