wined3d: Set the depth/stencil buffer to NULL before releasing it.

To prevent device_resource_released() from detecting it as still in use.
This commit is contained in:
Henri Verbeet 2010-10-05 14:32:36 +02:00 committed by Alexandre Julliard
parent 5fa84c56c3
commit e1b96eb347
1 changed files with 11 additions and 5 deletions

View File

@ -2107,13 +2107,19 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Uninit3D(IWineD3DDevice *iface,
This->onscreen_depth_stencil = NULL; This->onscreen_depth_stencil = NULL;
} }
TRACE("Releasing the depth stencil buffer at %p\n", This->depth_stencil); if (This->depth_stencil)
if (This->depth_stencil && IWineD3DSurface_Release((IWineD3DSurface *)This->depth_stencil))
{ {
if (This->auto_depth_stencil != This->depth_stencil) IWineD3DSurfaceImpl *ds = This->depth_stencil;
FIXME("(%p) Something is still holding the depth/stencil buffer.\n",This);
} TRACE("Releasing depth/stencil buffer %p.\n", ds);
This->depth_stencil = NULL; This->depth_stencil = NULL;
if (IWineD3DSurface_Release((IWineD3DSurface *)ds)
&& ds != This->auto_depth_stencil)
{
ERR("Something is still holding a reference to depth/stencil buffer %p.\n", ds);
}
}
TRACE("Releasing the render target at %p\n", This->render_targets[0]); TRACE("Releasing the render target at %p\n", This->render_targets[0]);
IWineD3DSurface_Release((IWineD3DSurface *)This->render_targets[0]); IWineD3DSurface_Release((IWineD3DSurface *)This->render_targets[0]);