wined3d: Unload resources on Uninit3D().
Henri Verbeet
hverbeet at codeweavers.com
Mon Mar 23 02:30:15 CDT 2009
This should prevent destroying GL objects without a GL context. Eg. when a ddraw
surface has a GL texture and is released after a call to Uninit3D().
---
dlls/wined3d/device.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 7f1840f..2ee97b0 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -2568,6 +2568,12 @@ err_out:
return hr;
}
+static HRESULT WINAPI device_unload_resource(IWineD3DResource *resource, void *ctx)
+{
+ IWineD3DResource_UnLoad(resource);
+ return WINED3D_OK;
+}
+
static HRESULT WINAPI IWineD3DDeviceImpl_Uninit3D(IWineD3DDevice *iface, D3DCB_DESTROYSURFACEFN D3DCB_DestroyDepthStencilSurface, D3DCB_DESTROYSWAPCHAINFN D3DCB_DestroySwapChain) {
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface;
int sampler;
@@ -2583,6 +2589,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Uninit3D(IWineD3DDevice *iface, D3DCB_D
if(This->logo_surface) IWineD3DSurface_Release(This->logo_surface);
+ /* Unload resources */
+ IWineD3DDevice_EnumResources(iface, device_unload_resource, NULL);
+
TRACE("Deleting high order patches\n");
for(i = 0; i < PATCHMAP_SIZE; i++) {
struct list *e1, *e2;
--
1.6.0.6
--------------030601050507080905010207--
More information about the wine-patches
mailing list