[PATCH 1/5] ddraw: Destroy the swapchain after the D3D device in DllMain().
Henri Verbeet
hverbeet at codeweavers.com
Sun Dec 11 14:43:28 CST 2011
---
dlls/ddraw/main.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/ddraw/main.c b/dlls/ddraw/main.c
index 9d5bb53..1477913 100644
--- a/dlls/ddraw/main.c
+++ b/dlls/ddraw/main.c
@@ -941,9 +941,6 @@ DllMain(HINSTANCE hInstDLL,
IDirectDraw4_AddRef(&ddraw->IDirectDraw4_iface);
IDirectDraw7_AddRef(&ddraw->IDirectDraw7_iface);
- if (ddraw->wined3d_swapchain)
- ddraw_destroy_swapchain(ddraw);
-
/* Does a D3D device exist? Destroy it
* TODO: Destroy all Vertex buffers, Lights, Materials
* and execute buffers too
@@ -954,6 +951,12 @@ DllMain(HINSTANCE hInstDLL,
while(IDirect3DDevice7_Release(&ddraw->d3ddevice->IDirect3DDevice7_iface));
}
+ /* Destroy the swapchain after any 3D device. The 3D device
+ * cleanup code needs a swapchain. Specifically, it tries to
+ * set the current render target to the front buffer. */
+ if (ddraw->wined3d_swapchain)
+ ddraw_destroy_swapchain(ddraw);
+
/* Try to release the objects
* Do an EnumSurfaces to find any hanging surfaces
*/
--
1.7.3.4
More information about the wine-patches
mailing list