Module: wine Branch: master Commit: 4a416f8d37ca87d1f42cc536dee2be9f0fccba64 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4a416f8d37ca87d1f42cc536de...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Apr 29 17:27:34 2015 +0200
ddraw: Release the surface clipper (if any) in ddraw_surface_wined3d_object_destroyed() (Valgrind).
---
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); }