[PATCH] wined3d: When releasing resources, don't perform any other operations on device if it has been released.

Christian Costa titan.costa at gmail.com
Sat Mar 31 14:42:45 CDT 2012


This patch fixes bug 30169.
---
 dlls/wined3d/device.c   |    1 +
 dlls/wined3d/resource.c |    2 +-
 2 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 674c528..847cf97 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -869,6 +869,7 @@ ULONG CDECL wined3d_device_decref(struct wined3d_device *device)
             {
                 FIXME("Leftover resource %p with type %s (%#x).\n",
                         resource, debug_d3dresourcetype(resource->type), resource->type);
+                resource->device = NULL;
             }
         }
 
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index da631d6..cfd22b9 100644
--- a/dlls/wined3d/resource.c
+++ b/dlls/wined3d/resource.c
@@ -147,7 +147,7 @@ void resource_cleanup(struct wined3d_resource *resource)
 
     TRACE("Cleaning up resource %p.\n", resource);
 
-    if (resource->pool == WINED3D_POOL_DEFAULT)
+    if ((resource->pool == WINED3D_POOL_DEFAULT) && resource->device)
     {
         TRACE("Decrementing device memory pool by %u.\n", resource->size);
         adapter_adjust_memory(resource->device->adapter, 0 - resource->size);




More information about the wine-patches mailing list