H. Verbeet : wined3d: Don't keep a reference to the container, as it creates a

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 13 07:03:33 CST 2006


Module: wine
Branch: refs/heads/master
Commit: 7a4b59b0c20d643dcd57d8b5f0d5d6d5fa07ee84
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=7a4b59b0c20d643dcd57d8b5f0d5d6d5fa07ee84

Author: H. Verbeet <hverbeet at gmail.com>
Date:   Mon Feb 13 13:23:58 2006 +0100

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 ab25c96..4cb1b3e 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -69,9 +69,6 @@ ULONG WINAPI IWineD3DSurfaceImpl_Release
             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_SetCo
 
     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 0c367bc..3fa1717 100644
--- a/dlls/wined3d/volume.c
+++ b/dlls/wined3d/volume.c
@@ -55,9 +55,6 @@ ULONG WINAPI IWineD3DVolumeImpl_Release(
     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_SetCon
 
     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;




More information about the wine-cvs mailing list