[PATCH 4/5] d3d9/tests: Create the d3d9ex object in create_device().
Henri Verbeet
hverbeet at codeweavers.com
Mon Nov 19 15:04:13 CST 2012
---
dlls/d3d9/tests/d3d9ex.c | 30 ++++++++++++++----------------
1 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/dlls/d3d9/tests/d3d9ex.c b/dlls/d3d9/tests/d3d9ex.c
index 8b79b46..6be030c 100644
--- a/dlls/d3d9/tests/d3d9ex.c
+++ b/dlls/d3d9/tests/d3d9ex.c
@@ -49,11 +49,15 @@ static HWND create_window(void)
return ret;
}
-static IDirect3DDevice9Ex *create_device(IDirect3D9Ex *d3d9, HWND device_window, HWND focus_window, BOOL windowed)
+static IDirect3DDevice9Ex *create_device(HWND device_window, HWND focus_window, BOOL windowed)
{
D3DPRESENT_PARAMETERS present_parameters = {0};
IDirect3DDevice9Ex *device;
D3DDISPLAYMODEEX mode, *m;
+ IDirect3D9Ex *d3d9;
+
+ if (FAILED(pDirect3DCreate9Ex(D3D_SDK_VERSION, &d3d9)))
+ return NULL;
present_parameters.Windowed = windowed;
present_parameters.hDeviceWindow = device_window;
@@ -73,16 +77,20 @@ static IDirect3DDevice9Ex *create_device(IDirect3D9Ex *d3d9, HWND device_window,
m = windowed ? NULL : &mode;
if (SUCCEEDED(IDirect3D9Ex_CreateDeviceEx(d3d9, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, focus_window,
- D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, m, &device))) return device;
+ D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, m, &device))) goto done;
present_parameters.AutoDepthStencilFormat = D3DFMT_D16;
if (SUCCEEDED(IDirect3D9Ex_CreateDeviceEx(d3d9, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, focus_window,
- D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, m, &device))) return device;
+ D3DCREATE_HARDWARE_VERTEXPROCESSING, &present_parameters, m, &device))) goto done;
if (SUCCEEDED(IDirect3D9Ex_CreateDeviceEx(d3d9, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, focus_window,
- D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present_parameters, m, &device))) return device;
+ D3DCREATE_SOFTWARE_VERTEXPROCESSING, &present_parameters, m, &device))) goto done;
+
+ device = NULL;
- return NULL;
+done:
+ IDirect3D9Ex_Release(d3d9);
+ return device;
}
static ULONG getref(IUnknown *obj) {
@@ -387,21 +395,13 @@ static void test_texture_sysmem_create(void)
IDirect3DDevice9Ex *device;
IDirect3DTexture9 *texture;
D3DLOCKED_RECT locked_rect;
- IDirect3D9Ex *d3d9;
UINT refcount;
HWND window;
HRESULT hr;
void *mem;
- if (FAILED(hr = pDirect3DCreate9Ex(D3D_SDK_VERSION, &d3d9)))
- {
- skip("Failed to create IDirect3D9Ex object (hr %#x), skipping tests.\n", hr);
- return;
- }
-
window = create_window();
- device = create_device(d3d9, window, window, TRUE);
- if (!device)
+ if (!(device = create_device(window, window, TRUE)))
{
skip("Failed to create a D3D device, skipping tests.\n");
goto done;
@@ -428,8 +428,6 @@ static void test_texture_sysmem_create(void)
done:
DestroyWindow(window);
- if (d3d9)
- IDirect3D9Ex_Release(d3d9);
}
START_TEST(d3d9ex)
--
1.7.8.6
More information about the wine-patches
mailing list