From 7a4b59b0c20d643dcd57d8b5f0d5d6d5fa07ee84 Mon Sep 17 00:00:00 2001 From: "H. Verbeet" Date: Mon, 13 Feb 2006 13:23:58 +0100 Subject: [PATCH] wined3d: Don't keep a reference to the container, as it creates a circular reference. --- dlls/wined3d/surface.c | 10 +--------- dlls/wined3d/volume.c | 10 +--------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index ab25c960ec4..4cb1b3e6f08 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -69,9 +69,6 @@ ULONG WINAPI IWineD3DSurfaceImpl_Release(IWineD3DSurface *iface) { glDeleteTextures(1, &This->glDescription.textureName); LEAVE_GL(); } - if (This->container) { - IWineD3DBase_Release(This->container); - } IWineD3DResourceImpl_CleanUp((IWineD3DResource *)iface); TRACE("(%p) Released\n", This); @@ -1357,12 +1354,7 @@ HRESULT WINAPI IWineD3DSurfaceImpl_SetContainer(IWineD3DSurface *iface, IWineD3D TRACE("This %p, container %p\n", This, container); - if (container) { - IWineD3DBase_AddRef(container); - } - if (This->container) { - IWineD3DBase_Release(This->container); - } + /* We can't keep a reference to the container, since the container already keeps a reference to us. */ TRACE("Setting container to %p from %p\n", container, This->container); This->container = container; diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c index 0c367bc2eeb..3fa17178cdf 100644 --- a/dlls/wined3d/volume.c +++ b/dlls/wined3d/volume.c @@ -55,9 +55,6 @@ ULONG WINAPI IWineD3DVolumeImpl_Release(IWineD3DVolume *iface) { TRACE("(%p) : Releasing from %ld\n", This, This->resource.ref); ref = InterlockedDecrement(&This->resource.ref); if (ref == 0) { - if (This->container) { - IWineD3DBase_Release(This->container); - } IWineD3DResourceImpl_CleanUp((IWineD3DResource *)iface); HeapFree(GetProcessHeap(), 0, This); } @@ -252,12 +249,7 @@ HRESULT WINAPI IWineD3DVolumeImpl_SetContainer(IWineD3DVolume *iface, IWineD3DBa TRACE("This %p, container %p\n", This, container); - if (container) { - IWineD3DBase_AddRef(container); - } - if (This->container) { - IWineD3DBase_Release(This->container); - } + /* We can't keep a reference to the container, since the container already keeps a reference to us. */ TRACE("Setting container to %p from %p\n", container, This->container); This->container = container;