Henri Verbeet : d3d: Make sure the device is properly released when exiting the tests.
Alexandre Julliard
julliard at winehq.org
Mon Dec 29 08:47:53 CST 2008
Module: wine
Branch: master
Commit: 664b58dc6f247eec29e0a7c1c17c4067d9f98795
URL: http://source.winehq.org/git/wine.git/?a=commit;h=664b58dc6f247eec29e0a7c1c17c4067d9f98795
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Mon Dec 29 09:14:29 2008 +0100
d3d: Make sure the device is properly released when exiting the tests.
---
dlls/d3d8/tests/surface.c | 4 ++++
dlls/d3d8/tests/texture.c | 4 ++++
dlls/d3d8/tests/visual.c | 5 ++++-
dlls/d3d8/tests/volume.c | 4 ++++
dlls/d3d9/tests/shader.c | 10 ++++++++++
dlls/d3d9/tests/stateblock.c | 7 ++++++-
dlls/d3d9/tests/surface.c | 4 ++++
dlls/d3d9/tests/texture.c | 5 +++++
dlls/d3d9/tests/vertexdeclaration.c | 7 +++++++
dlls/d3d9/tests/volume.c | 4 ++++
10 files changed, 52 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d8/tests/surface.c b/dlls/d3d8/tests/surface.c
index e1e65b0..4cb2350 100644
--- a/dlls/d3d8/tests/surface.c
+++ b/dlls/d3d8/tests/surface.c
@@ -324,6 +324,7 @@ START_TEST(surface)
{
HMODULE d3d8_handle;
IDirect3DDevice8 *device_ptr;
+ ULONG refcount;
d3d8_handle = LoadLibraryA("d3d8.dll");
if (!d3d8_handle)
@@ -339,4 +340,7 @@ START_TEST(surface)
test_surface_get_container(device_ptr);
test_lockrect_invalid(device_ptr);
test_private_data(device_ptr);
+
+ refcount = IDirect3DDevice8_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
}
diff --git a/dlls/d3d8/tests/texture.c b/dlls/d3d8/tests/texture.c
index fd97eac..1475de1 100644
--- a/dlls/d3d8/tests/texture.c
+++ b/dlls/d3d8/tests/texture.c
@@ -135,6 +135,7 @@ START_TEST(texture)
D3DCAPS8 caps;
HMODULE d3d8_handle;
IDirect3DDevice8 *device_ptr;
+ ULONG refcount;
d3d8_handle = LoadLibraryA("d3d8.dll");
if (!d3d8_handle)
@@ -150,4 +151,7 @@ START_TEST(texture)
test_texture_stage_states(device_ptr, caps.MaxTextureBlendStages);
test_cube_textures(device_ptr, caps.TextureCaps);
+
+ refcount = IDirect3DDevice8_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
}
diff --git a/dlls/d3d8/tests/visual.c b/dlls/d3d8/tests/visual.c
index 8f853c1..9b2b968 100644
--- a/dlls/d3d8/tests/visual.c
+++ b/dlls/d3d8/tests/visual.c
@@ -1345,8 +1345,11 @@ START_TEST(visual)
cleanup:
if(device_ptr) {
D3DDEVICE_CREATION_PARAMETERS creation_parameters;
+ ULONG refcount;
+
IDirect3DDevice8_GetCreationParameters(device_ptr, &creation_parameters);
- IDirect3DDevice8_Release(device_ptr);
+ refcount = IDirect3DDevice8_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
DestroyWindow(creation_parameters.hFocusWindow);
}
}
diff --git a/dlls/d3d8/tests/volume.c b/dlls/d3d8/tests/volume.c
index ee43140..f294892 100644
--- a/dlls/d3d8/tests/volume.c
+++ b/dlls/d3d8/tests/volume.c
@@ -128,6 +128,7 @@ START_TEST(volume)
{
HMODULE d3d8_handle;
IDirect3DDevice8 *device_ptr;
+ ULONG refcount;
D3DCAPS8 caps;
d3d8_handle = LoadLibraryA("d3d8.dll");
@@ -147,4 +148,7 @@ START_TEST(volume)
}
test_volume_get_container(device_ptr);
+
+ refcount = IDirect3DDevice8_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
}
diff --git a/dlls/d3d9/tests/shader.c b/dlls/d3d9/tests/shader.c
index 3d80883..e1ad9bb 100644
--- a/dlls/d3d9/tests/shader.c
+++ b/dlls/d3d9/tests/shader.c
@@ -110,6 +110,9 @@ static void test_get_set_vertex_shader(IDirect3DDevice9 *device_ptr)
ok(hret == D3D_OK && shader_refcount == i && current_shader_ptr == shader_ptr,
"GetVertexShader returned: hret 0x%x, current_shader_ptr %p refcount %d. "
"Expected hret 0x%x, current_shader_ptr %p, refcount %d.\n", hret, current_shader_ptr, shader_refcount, D3D_OK, shader_ptr, i);
+ IDirect3DVertexShader9_Release(current_shader_ptr);
+
+ IDirect3DVertexShader9_Release(shader_ptr);
}
static void test_vertex_shader_constant(IDirect3DDevice9 *device_ptr, DWORD consts)
@@ -174,6 +177,9 @@ static void test_get_set_pixel_shader(IDirect3DDevice9 *device_ptr)
ok(hret == D3D_OK && shader_refcount == i && current_shader_ptr == shader_ptr,
"GetPixelShader returned: hret 0x%x, current_shader_ptr %p refcount %d. "
"Expected hret 0x%x, current_shader_ptr %p, refcount %d.\n", hret, current_shader_ptr, shader_refcount, D3D_OK, shader_ptr, i);
+ IDirect3DPixelShader9_Release(current_shader_ptr);
+
+ IDirect3DPixelShader9_Release(shader_ptr);
}
static void test_pixel_shader_constant(IDirect3DDevice9 *device_ptr)
@@ -207,6 +213,7 @@ START_TEST(shader)
{
D3DCAPS9 caps;
IDirect3DDevice9 *device_ptr;
+ ULONG refcount;
d3d9_handle = LoadLibraryA("d3d9.dll");
if (!d3d9_handle)
@@ -234,4 +241,7 @@ START_TEST(shader)
test_pixel_shader_constant(device_ptr);
}
else skip("No pixel shader support\n");
+
+ refcount = IDirect3DDevice9_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
}
diff --git a/dlls/d3d9/tests/stateblock.c b/dlls/d3d9/tests/stateblock.c
index f8ee57d..baec5c6 100644
--- a/dlls/d3d9/tests/stateblock.c
+++ b/dlls/d3d9/tests/stateblock.c
@@ -91,6 +91,7 @@ static void test_begin_end_state_block(IDirect3DDevice9 *device_ptr)
ok(hret == D3D_OK && state_block_ptr != 0 && state_block_ptr != (IDirect3DStateBlock9 *)0xdeadbeef,
"EndStateBlock returned: hret 0x%x, state_block_ptr %p. "
"Expected hret 0x%x, state_block_ptr != %p, state_block_ptr != 0xdeadbeef.\n", hret, state_block_ptr, D3D_OK, NULL);
+ IDirect3DStateBlock9_Release(state_block_ptr);
/* Calling EndStateBlock while not recording should return D3DERR_INVALIDCALL. state_block_ptr should not be touched. */
state_block_ptr = (IDirect3DStateBlock9 *)0xdeadbeef;
@@ -1583,5 +1584,9 @@ START_TEST(stateblock)
test_state_management(device_ptr, &device_pparams);
test_shader_constant_apply(device_ptr);
- if (device_ptr) IUnknown_Release(device_ptr);
+ if (device_ptr)
+ {
+ ULONG refcount = IDirect3DDevice9_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
+ }
}
diff --git a/dlls/d3d9/tests/surface.c b/dlls/d3d9/tests/surface.c
index eed45c3..ea9c0c1 100644
--- a/dlls/d3d9/tests/surface.c
+++ b/dlls/d3d9/tests/surface.c
@@ -382,6 +382,7 @@ START_TEST(surface)
{
HMODULE d3d9_handle;
IDirect3DDevice9 *device_ptr;
+ ULONG refcount;
d3d9_handle = LoadLibraryA("d3d9.dll");
if (!d3d9_handle)
@@ -398,4 +399,7 @@ START_TEST(surface)
test_lockrect_offset(device_ptr);
test_lockrect_invalid(device_ptr);
test_private_data(device_ptr);
+
+ refcount = IDirect3DDevice9_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
}
diff --git a/dlls/d3d9/tests/texture.c b/dlls/d3d9/tests/texture.c
index ede9467..86132b7 100644
--- a/dlls/d3d9/tests/texture.c
+++ b/dlls/d3d9/tests/texture.c
@@ -321,6 +321,7 @@ static void test_filter(IDirect3DDevice9 *device) {
}
hr = IDirect3DDevice9_SetTexture(device, 0, NULL);
+ IDirect3DTexture9_Release(texture);
out:
IDirect3D9_Release(d3d9);
@@ -342,6 +343,7 @@ START_TEST(texture)
D3DCAPS9 caps;
HMODULE d3d9_handle;
IDirect3DDevice9 *device_ptr;
+ ULONG refcount;
d3d9_handle = LoadLibraryA("d3d9.dll");
if (!d3d9_handle)
@@ -360,4 +362,7 @@ START_TEST(texture)
test_mipmap_gen(device_ptr);
test_filter(device_ptr);
test_gettexture(device_ptr);
+
+ refcount = IDirect3DDevice9_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
}
diff --git a/dlls/d3d9/tests/vertexdeclaration.c b/dlls/d3d9/tests/vertexdeclaration.c
index 1ec8840..4207cbe 100644
--- a/dlls/d3d9/tests/vertexdeclaration.c
+++ b/dlls/d3d9/tests/vertexdeclaration.c
@@ -183,6 +183,7 @@ static void test_get_set_vertex_declaration(IDirect3DDevice9 *device_ptr, IDirec
ok(hret == D3D_OK && decl_refcount == i && current_decl_ptr == decl_ptr,
"GetVertexDeclaration returned: hret 0x%x, current_decl_ptr %p refcount %d. "
"Expected hret 0x%x, current_decl_ptr %p, refcount %d.\n", hret, current_decl_ptr, decl_refcount, D3D_OK, decl_ptr, i);
+ IDirect3DVertexDeclaration9_Release(current_decl_ptr);
}
static void test_get_declaration(IDirect3DVertexDeclaration9 *decl_ptr, D3DVERTEXELEMENT9 *vertex_decl, UINT expected_num_elements)
@@ -852,6 +853,7 @@ START_TEST(vertexdeclaration)
UINT simple_decl_num_elements = sizeof(simple_decl) / sizeof(*simple_decl);
IDirect3DDevice9 *device_ptr = 0;
IDirect3DVertexDeclaration9 *decl_ptr = 0;
+ ULONG refcount;
d3d9_handle = LoadLibraryA("d3d9.dll");
if (!d3d9_handle)
@@ -880,4 +882,9 @@ START_TEST(vertexdeclaration)
test_fvf_decl_management(device_ptr);
test_vertex_declaration_alignment(device_ptr);
test_unused_type(device_ptr);
+
+ IDirect3DVertexDeclaration9_Release(decl_ptr);
+
+ refcount = IDirect3DDevice9_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
}
diff --git a/dlls/d3d9/tests/volume.c b/dlls/d3d9/tests/volume.c
index 8b07072..38ea501 100644
--- a/dlls/d3d9/tests/volume.c
+++ b/dlls/d3d9/tests/volume.c
@@ -125,6 +125,7 @@ START_TEST(volume)
{
HMODULE d3d9_handle;
IDirect3DDevice9 *device_ptr;
+ ULONG refcount;
D3DCAPS9 caps;
memset(&caps, 0, sizeof(caps));
@@ -145,4 +146,7 @@ START_TEST(volume)
}
test_volume_get_container(device_ptr);
+
+ refcount = IDirect3DDevice9_Release(device_ptr);
+ ok(!refcount, "Device has %u references left\n", refcount);
}
More information about the wine-cvs
mailing list