Henri Verbeet : dxgi/tests: Don't reuse the device.
Alexandre Julliard
julliard at winehq.org
Mon Feb 10 13:06:56 CST 2014
Module: wine
Branch: master
Commit: 4d7bd4ce4a02d59bf79f3b9af3f37edecfb95bfc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4d7bd4ce4a02d59bf79f3b9af3f37edecfb95bfc
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Mon Feb 10 10:37:55 2014 +0100
dxgi/tests: Don't reuse the device.
---
dlls/dxgi/tests/device.c | 98 ++++++++++++++++++++++++++++++++++------------
1 file changed, 74 insertions(+), 24 deletions(-)
diff --git a/dlls/dxgi/tests/device.c b/dlls/dxgi/tests/device.c
index e8d2827..b907a23 100644
--- a/dlls/dxgi/tests/device.c
+++ b/dlls/dxgi/tests/device.c
@@ -44,11 +44,19 @@ success:
return dxgi_device;
}
-static void test_device_interfaces(IDXGIDevice *device)
+static void test_device_interfaces(void)
{
+ IDXGIDevice *device;
+ ULONG refcount;
IUnknown *obj;
HRESULT hr;
+ if (!(device = create_device()))
+ {
+ skip("Failed to create device, skipping tests.\n");
+ return;
+ }
+
if (SUCCEEDED(hr = IDXGIDevice_QueryInterface(device, &IID_IUnknown, (void **)&obj)))
IUnknown_Release(obj);
ok(SUCCEEDED(hr), "IDXGIDevice does not implement IUnknown\n");
@@ -64,16 +72,27 @@ static void test_device_interfaces(IDXGIDevice *device)
if (SUCCEEDED(hr = IDXGIDevice_QueryInterface(device, &IID_ID3D10Device, (void **)&obj)))
IUnknown_Release(obj);
ok(SUCCEEDED(hr), "IDXGIDevice does not implement ID3D10Device\n");
+
+ refcount = IDXGIDevice_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
}
-static void test_adapter_desc(IDXGIDevice *device)
+static void test_adapter_desc(void)
{
DXGI_ADAPTER_DESC1 desc1;
IDXGIAdapter1 *adapter1;
DXGI_ADAPTER_DESC desc;
IDXGIAdapter *adapter;
+ IDXGIDevice *device;
+ ULONG refcount;
HRESULT hr;
+ if (!(device = create_device()))
+ {
+ skip("Failed to create device, skipping tests.\n");
+ return;
+ }
+
hr = IDXGIDevice_GetAdapter(device, &adapter);
ok(SUCCEEDED(hr), "GetAdapter failed, hr %#x.\n", hr);
@@ -123,15 +142,25 @@ static void test_adapter_desc(IDXGIDevice *device)
done:
IDXGIAdapter_Release(adapter);
+ refcount = IDXGIDevice_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
}
-static void test_create_surface(IDXGIDevice *device)
+static void test_create_surface(void)
{
ID3D10Texture2D *texture;
IDXGISurface *surface;
DXGI_SURFACE_DESC desc;
+ IDXGIDevice *device;
+ ULONG refcount;
HRESULT hr;
+ if (!(device = create_device()))
+ {
+ skip("Failed to create device, skipping tests.\n");
+ return;
+ }
+
desc.Width = 512;
desc.Height = 512;
desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
@@ -146,18 +175,28 @@ static void test_create_surface(IDXGIDevice *device)
if (SUCCEEDED(hr)) ID3D10Texture2D_Release(texture);
IDXGISurface_Release(surface);
+ refcount = IDXGIDevice_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
}
-static void test_parents(IDXGIDevice *device)
+static void test_parents(void)
{
DXGI_SURFACE_DESC surface_desc;
IDXGISurface *surface;
IDXGIFactory *factory;
IDXGIAdapter *adapter;
+ IDXGIDevice *device;
IDXGIOutput *output;
IUnknown *parent;
+ ULONG refcount;
HRESULT hr;
+ if (!(device = create_device()))
+ {
+ skip("Failed to create device, skipping tests.\n");
+ return;
+ }
+
surface_desc.Width = 512;
surface_desc.Height = 512;
surface_desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
@@ -206,16 +245,26 @@ static void test_parents(IDXGIDevice *device)
IUnknown_Release(parent);
IDXGIAdapter_Release(adapter);
+ refcount = IDXGIDevice_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
}
-static void test_output(IDXGIDevice *device)
+static void test_output(void)
{
IDXGIAdapter *adapter;
+ IDXGIDevice *device;
HRESULT hr;
IDXGIOutput *output;
+ ULONG refcount;
UINT mode_count, mode_count_comp, i;
DXGI_MODE_DESC *modes;
+ if (!(device = create_device()))
+ {
+ skip("Failed to create device, skipping tests.\n");
+ return;
+ }
+
hr = IDXGIDevice_GetAdapter(device, &adapter);
ok(SUCCEEDED(hr), "GetAdapter failed, hr %#x.\n", hr);
@@ -224,6 +273,7 @@ static void test_output(IDXGIDevice *device)
{
skip("Adapter doesn't have any outputs, skipping tests.\n");
IDXGIAdapter_Release(adapter);
+ IDXGIDevice_Release(device);
return;
}
ok(SUCCEEDED(hr), "EnumOutputs failed, hr %#x.\n", hr);
@@ -240,6 +290,7 @@ static void test_output(IDXGIDevice *device)
skip("GetDisplayModeList() not supported, skipping tests.\n");
IDXGIOutput_Release(output);
IDXGIAdapter_Release(adapter);
+ IDXGIDevice_Release(device);
return;
}
mode_count_comp = mode_count;
@@ -301,6 +352,8 @@ static void test_output(IDXGIDevice *device)
HeapFree(GetProcessHeap(), 0, modes);
IDXGIOutput_Release(output);
IDXGIAdapter_Release(adapter);
+ refcount = IDXGIDevice_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
}
struct refresh_rates
@@ -311,11 +364,13 @@ struct refresh_rates
BOOL denominator_should_pass;
};
-static void test_createswapchain(IDXGIDevice *device)
+static void test_createswapchain(void)
{
IUnknown *obj;
IDXGIAdapter *adapter;
IDXGIFactory *factory;
+ IDXGIDevice *device;
+ ULONG refcount;
IDXGISwapChain *swapchain;
DXGI_SWAP_CHAIN_DESC creation_desc, result_desc;
HRESULT hr;
@@ -331,6 +386,11 @@ static void test_createswapchain(IDXGIDevice *device)
{ 0, 0, TRUE, FALSE},
};
+ if (!(device = create_device()))
+ {
+ skip("Failed to create device, skipping tests.\n");
+ return;
+ }
wc.lpfnWndProc = DefWindowProcA;
wc.lpszClassName = "dxgi_test_wc";
@@ -435,26 +495,16 @@ static void test_createswapchain(IDXGIDevice *device)
IDXGIFactory_Release(factory);
IDXGIAdapter_Release(adapter);
IUnknown_Release(obj);
+ refcount = IDXGIDevice_Release(device);
+ ok(!refcount, "Device has %u references left.\n", refcount);
}
START_TEST(device)
{
- IDXGIDevice *device;
- ULONG refcount;
-
- if (!(device = create_device()))
- {
- skip("Failed to create device, skipping tests\n");
- return;
- }
-
- test_adapter_desc(device);
- test_device_interfaces(device);
- test_create_surface(device);
- test_parents(device);
- test_output(device);
- test_createswapchain(device);
-
- refcount = IDXGIDevice_Release(device);
- ok(!refcount, "Device has %u references left\n", refcount);
+ test_adapter_desc();
+ test_device_interfaces();
+ test_create_surface();
+ test_parents();
+ test_output();
+ test_createswapchain();
}
More information about the wine-cvs
mailing list