[PATCH 2/5] ddraw: Release the surface clipper (if any) in ddraw_surface_wined3d_object_destroyed() (Valgrind).
Henri Verbeet
hverbeet at codeweavers.com
Wed Apr 29 10:27:34 CDT 2015
---
dlls/ddraw/surface.c | 3 +++
dlls/ddraw/tests/ddraw1.c | 4 +++-
dlls/ddraw/tests/ddraw2.c | 4 +++-
dlls/ddraw/tests/ddraw4.c | 4 +++-
dlls/ddraw/tests/ddraw7.c | 4 +++-
5 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 0d2d731..f716cfc 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -5615,6 +5615,9 @@ static void STDMETHODCALLTYPE ddraw_surface_wined3d_object_destroyed(void *paren
/* Reduce the ddraw surface count. */
list_remove(&surface->surface_list_entry);
+ if (surface->clipper)
+ IDirectDrawClipper_Release(&surface->clipper->IDirectDrawClipper_iface);
+
if (surface == surface->ddraw->primary)
surface->ddraw->primary = NULL;
diff --git a/dlls/ddraw/tests/ddraw1.c b/dlls/ddraw/tests/ddraw1.c
index 839b2b7..9860957 100644
--- a/dlls/ddraw/tests/ddraw1.c
+++ b/dlls/ddraw/tests/ddraw1.c
@@ -627,6 +627,7 @@ static void test_clipper_blt(void)
IDirectDraw *ddraw;
RGNDATA *rgn_data;
D3DCOLOR color;
+ ULONG refcount;
HRGN r1, r2;
HWND window;
DDBLTFX fx;
@@ -819,7 +820,8 @@ static void test_clipper_blt(void)
IDirectDrawSurface_Release(dst_surface);
IDirectDrawSurface_Release(src_surface);
- IDirectDrawClipper_Release(clipper);
+ refcount = IDirectDrawClipper_Release(clipper);
+ ok(!refcount, "Clipper has %u references left.\n", refcount);
IDirectDraw_Release(ddraw);
}
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 42f65bc..29971e5 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -521,6 +521,7 @@ static void test_clipper_blt(void)
IDirectDraw2 *ddraw;
RGNDATA *rgn_data;
D3DCOLOR color;
+ ULONG refcount;
HRGN r1, r2;
HWND window;
DDBLTFX fx;
@@ -713,7 +714,8 @@ static void test_clipper_blt(void)
IDirectDrawSurface_Release(dst_surface);
IDirectDrawSurface_Release(src_surface);
- IDirectDrawClipper_Release(clipper);
+ refcount = IDirectDrawClipper_Release(clipper);
+ ok(!refcount, "Clipper has %u references left.\n", refcount);
IDirectDraw2_Release(ddraw);
}
diff --git a/dlls/ddraw/tests/ddraw4.c b/dlls/ddraw/tests/ddraw4.c
index ddb7a1d..c3f6f95 100644
--- a/dlls/ddraw/tests/ddraw4.c
+++ b/dlls/ddraw/tests/ddraw4.c
@@ -742,6 +742,7 @@ static void test_clipper_blt(void)
IDirectDraw4 *ddraw;
RGNDATA *rgn_data;
D3DCOLOR color;
+ ULONG refcount;
HRGN r1, r2;
HWND window;
DDBLTFX fx;
@@ -934,7 +935,8 @@ static void test_clipper_blt(void)
IDirectDrawSurface4_Release(dst_surface);
IDirectDrawSurface4_Release(src_surface);
- IDirectDrawClipper_Release(clipper);
+ refcount = IDirectDrawClipper_Release(clipper);
+ ok(!refcount, "Clipper has %u references left.\n", refcount);
IDirectDraw4_Release(ddraw);
}
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index 1f43646..e151fb7 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -666,6 +666,7 @@ static void test_clipper_blt(void)
IDirectDraw7 *ddraw;
RGNDATA *rgn_data;
D3DCOLOR color;
+ ULONG refcount;
HRGN r1, r2;
HWND window;
DDBLTFX fx;
@@ -858,7 +859,8 @@ static void test_clipper_blt(void)
IDirectDrawSurface7_Release(dst_surface);
IDirectDrawSurface7_Release(src_surface);
- IDirectDrawClipper_Release(clipper);
+ refcount = IDirectDrawClipper_Release(clipper);
+ ok(!refcount, "Clipper has %u references left.\n", refcount);
IDirectDraw7_Release(ddraw);
}
--
1.7.10.4
More information about the wine-patches
mailing list