Henri Verbeet : d3d9/tests: Make sure the device is released properly.
Alexandre Julliard
julliard at winehq.org
Tue Jun 23 10:02:44 CDT 2009
Module: wine
Branch: master
Commit: c672071db70d0932631d92ddebc6ec65a9947c51
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c672071db70d0932631d92ddebc6ec65a9947c51
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Tue Jun 23 09:05:32 2009 +0200
d3d9/tests: Make sure the device is released properly.
---
dlls/d3d9/tests/device.c | 105 ++++++++++++++++++++++++++++++++++-----------
dlls/d3d9/tests/query.c | 16 +++++--
2 files changed, 91 insertions(+), 30 deletions(-)
diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c
index 41c6d47..279c065 100644
--- a/dlls/d3d9/tests/device.c
+++ b/dlls/d3d9/tests/device.c
@@ -130,9 +130,13 @@ static void test_mipmap_levels(void)
check_mipmap_levels(pDevice, 1, 256, 9);
check_mipmap_levels(pDevice, 1, 1, 1);
- cleanup:
- if (pD3d) IUnknown_Release( pD3d );
- if (pDevice) IUnknown_Release( pDevice );
+cleanup:
+ if (pDevice)
+ {
+ UINT refcount = IUnknown_Release( pDevice );
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
+ if (pD3d) IUnknown_Release( pD3d );
DestroyWindow( hwnd );
}
@@ -186,8 +190,12 @@ static void test_checkdevicemultisampletype(void)
ok(qualityLevels == 1,"qualitylevel is not 1 but %d\n",qualityLevels);
cleanup:
- if (pD3d) IUnknown_Release( pD3d );
- if (pDevice) IUnknown_Release( pDevice );
+ if (pDevice)
+ {
+ UINT refcount = IUnknown_Release( pDevice );
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
+ if (pD3d) IUnknown_Release( pD3d );
DestroyWindow( hwnd );
}
@@ -326,12 +334,16 @@ static void test_swapchain(void)
ok(swapchainX == NULL, "The swapchain pointer is %p\n", swapchainX);
if(swapchainX && swapchainX != (void *) 0xdeadbeef ) IDirect3DSwapChain9_Release(swapchainX);
- cleanup:
+cleanup:
if(swapchain1) IDirect3DSwapChain9_Release(swapchain1);
if(swapchain2) IDirect3DSwapChain9_Release(swapchain2);
if(swapchain3) IDirect3DSwapChain9_Release(swapchain3);
- if(pDevice) IDirect3DDevice9_Release(pDevice);
- if(pD3d) IDirect3DDevice9_Release(pD3d);
+ if (pDevice)
+ {
+ UINT refcount = IDirect3DDevice9_Release(pDevice);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
+ if (pD3d) IDirect3D9_Release(pD3d);
DestroyWindow( hwnd );
}
@@ -760,8 +772,12 @@ static void test_cursor(void)
ok(info.hCursor == cur, "The cursor handle is %p\n", info.hCursor); /* unchanged */
cleanup:
- if(pDevice) IDirect3D9_Release(pDevice);
- if(pD3d) IDirect3D9_Release(pD3d);
+ if (pDevice)
+ {
+ UINT refcount = IDirect3DDevice9_Release(pDevice);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
+ if (pD3d) IDirect3D9_Release(pD3d);
DestroyWindow( hwnd );
}
@@ -1145,8 +1161,12 @@ static void test_reset(void)
cleanup:
HeapFree(GetProcessHeap(), 0, modes);
- if(pD3d) IDirect3D9_Release(pD3d);
- if(pDevice) IDirect3D9_Release(pDevice);
+ if (pDevice)
+ {
+ UINT refcount = IDirect3DDevice9_Release(pDevice);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
+ if (pD3d) IDirect3D9_Release(pD3d);
}
/* Test adapter display modes */
@@ -1389,8 +1409,12 @@ cleanup:
if(pSurface1) IDirect3DSurface9_Release(pSurface1);
if(pSurface2) IDirect3DSurface9_Release(pSurface2);
if(pSurface3) IDirect3DSurface9_Release(pSurface3);
- if(pD3d) IDirect3D9_Release(pD3d);
- if(pDevice) IDirect3D9_Release(pDevice);
+ if (pDevice)
+ {
+ UINT refcount = IDirect3DDevice9_Release(pDevice);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
+ if (pD3d) IDirect3D9_Release(pD3d);
if(hwnd) DestroyWindow(hwnd);
}
@@ -1456,8 +1480,12 @@ static void test_limits(void)
*/
cleanup:
if(pTexture) IDirect3DTexture9_Release(pTexture);
- if(pD3d) IDirect3D9_Release(pD3d);
- if(pDevice) IDirect3D9_Release(pDevice);
+ if (pDevice)
+ {
+ UINT refcount = IDirect3D9_Release(pDevice);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
+ if (pD3d) IDirect3D9_Release(pD3d);
if(hwnd) DestroyWindow(hwnd);
}
@@ -1615,8 +1643,12 @@ static void test_depthstenciltest(void)
cleanup:
if(pDepthStencil) IDirect3DSurface9_Release(pDepthStencil);
- if(pD3d) IDirect3D9_Release(pD3d);
- if(pDevice) IDirect3D9_Release(pDevice);
+ if (pDevice)
+ {
+ UINT refcount = IDirect3D9_Release(pDevice);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
+ if (pD3d) IDirect3D9_Release(pD3d);
if(hwnd) DestroyWindow(hwnd);
}
@@ -1739,8 +1771,12 @@ static void test_draw_indexed(void)
IDirect3DVertexDeclaration9_Release(vertex_declaration);
cleanup:
+ if (device)
+ {
+ UINT refcount = IDirect3DDevice9_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
if (d3d9) IDirect3D9_Release(d3d9);
- if (device) IDirect3DDevice9_Release(device);
if (hwnd) DestroyWindow(hwnd);
}
@@ -1831,7 +1867,11 @@ cleanup:
if (buffer) IDirect3DVertexBuffer9_Release(buffer);
if(decl) IDirect3DVertexDeclaration9_Release(decl);
if(shader) IDirect3DVertexShader9_Release(shader);
- if(device) IDirect3DDevice9_Release(device);
+ if (device)
+ {
+ UINT refcount = IDirect3DDevice9_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
if(d3d9) IDirect3D9_Release(d3d9);
}
@@ -1901,8 +1941,13 @@ static void test_vertex_buffer_alignment(void)
}
}
- cleanup:
- if(d3d9) IDirect3D9_Release(d3d9);
+cleanup:
+ if (device)
+ {
+ UINT refcount = IDirect3DDevice9_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
+ if (d3d9) IDirect3D9_Release(d3d9);
}
static void test_lights(void)
@@ -1963,8 +2008,12 @@ static void test_lights(void)
ok(hr == D3D_OK, "Disabling light %u failed with %08x\n", i, hr);
}
- cleanup:
- if(device) IDirect3DDevice9_Release(device);
+cleanup:
+ if (device)
+ {
+ UINT refcount = IDirect3DDevice9_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
if(d3d9) IDirect3D9_Release(d3d9);
}
@@ -2037,9 +2086,13 @@ static void test_set_stream_source(void)
hr = IDirect3DDevice9_SetStreamSource(device, 0, NULL, 0, 0);
ok(hr == D3D_OK, "Failed to set the stream source, offset 4, hr = %08x\n", hr);
- if(pVertexBuffer) IDirect3DDevice9_Release(pVertexBuffer);
cleanup:
- if(device) IDirect3DDevice9_Release(device);
+ if (pVertexBuffer) IDirect3DVertexBuffer9_Release(pVertexBuffer);
+ if (device)
+ {
+ UINT refcount = IDirect3DDevice9_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
if(d3d9) IDirect3D9_Release(d3d9);
}
diff --git a/dlls/d3d9/tests/query.c b/dlls/d3d9/tests/query.c
index 5a75907..d015353 100644
--- a/dlls/d3d9/tests/query.c
+++ b/dlls/d3d9/tests/query.c
@@ -130,8 +130,12 @@ static void test_query_support(IDirect3D9 *pD3d, HWND hwnd)
}
}
- cleanup:
- if(pDevice) IDirect3DDevice9_Release(pDevice);
+cleanup:
+ if (pDevice)
+ {
+ UINT refcount = IDirect3DDevice9_Release(pDevice);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
}
static void test_occlusion_query_states(IDirect3D9 *pD3d, HWND hwnd)
@@ -226,10 +230,14 @@ static void test_occlusion_query_states(IDirect3D9 *pD3d, HWND hwnd)
hr = IDirect3DQuery9_Issue(pQuery, D3DISSUE_END);
ok(hr == D3D_OK, "IDirect3DQuery9_Issue(D3DISSUE_END) on a ended query returned %08x\n", hr);
- cleanup:
+cleanup:
HeapFree(GetProcessHeap(), 0, data);
if (pQuery) IDirect3DQuery9_Release(pQuery);
- if(pDevice) IDirect3DDevice9_Release(pDevice);
+ if (pDevice)
+ {
+ UINT refcount = IDirect3DDevice9_Release(pDevice);
+ ok(!refcount, "Device has %u references left.\n", refcount);
+ }
}
START_TEST(query)
More information about the wine-cvs
mailing list