From cf01bb3d2ab711c9a0504350097383372b8f6818 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michael=20M=C3=BCller?= Date: Mon, 9 Sep 2013 16:16:32 +0200 Subject: [PATCH] d3d9/tests: Test if IDirect3DSwapChain9Ex is available with IDirect3D9(Ex). --- dlls/d3d9/tests/d3d9ex.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/dlls/d3d9/tests/d3d9ex.c b/dlls/d3d9/tests/d3d9ex.c index f4f3327f76d..d175d4e28d3 100644 --- a/dlls/d3d9/tests/d3d9ex.c +++ b/dlls/d3d9/tests/d3d9ex.c @@ -122,6 +122,8 @@ static void test_qi_base_to_ex(void) IDirect3D9Ex *d3d9ex = (void *) 0xdeadbeef; IDirect3DDevice9 *device; IDirect3DDevice9Ex *deviceEx = (void *) 0xdeadbeef; + IDirect3DSwapChain9 *swapchain = NULL; + IDirect3DSwapChain9Ex *swapchainEx = (void *)0xdeadbeef; HRESULT hr; HWND window = create_window(); D3DPRESENT_PARAMETERS present_parameters; @@ -160,6 +162,22 @@ static void test_qi_base_to_ex(void) ok(deviceEx == NULL, "QueryInterface returned interface %p, expected NULL\n", deviceEx); if(deviceEx) IDirect3DDevice9Ex_Release(deviceEx); + /* Get the implicit swapchain */ + hr = IDirect3DDevice9_GetSwapChain(device, 0, &swapchain); + ok(SUCCEEDED(hr), "Failed to get the implicit swapchain (%08x).\n", hr); + if (SUCCEEDED(hr)) + { + hr = IDirect3DSwapChain9_QueryInterface(swapchain, &IID_IDirect3DSwapChain9Ex, (void **)&swapchainEx); + ok(hr == E_NOINTERFACE, + "IDirect3DSwapChain9::QueryInterface for IID_IDirect3DSwapChain9Ex returned %08x, expected E_NOINTERFACE.\n", + hr); + ok(swapchainEx == NULL, "QueryInterface returned interface %p, expected NULL.\n", swapchainEx); + if (swapchainEx) + IDirect3DSwapChain9Ex_Release(swapchainEx); + } + if (swapchain) + IDirect3DSwapChain9_Release(swapchain); + IDirect3DDevice9_Release(device); out: @@ -173,6 +191,8 @@ static void test_qi_ex_to_base(void) IDirect3D9Ex *d3d9ex; IDirect3DDevice9 *device; IDirect3DDevice9Ex *deviceEx = (void *) 0xdeadbeef; + IDirect3DSwapChain9 *swapchain = NULL; + IDirect3DSwapChain9Ex *swapchainEx = (void *)0xdeadbeef; HRESULT hr; HWND window = create_window(); D3DPRESENT_PARAMETERS present_parameters; @@ -242,6 +262,24 @@ static void test_qi_ex_to_base(void) ok(ref == 2, "IDirect3DDevice9 refcount is %d, expected 2\n", ref); ref = getref((IUnknown *) deviceEx); ok(ref == 2, "IDirect3DDevice9Ex refcount is %d, expected 2\n", ref); + + /* Get the implicit swapchain */ + hr = IDirect3DDevice9_GetSwapChain(device, 0, &swapchain); + ok(SUCCEEDED(hr), "Failed to get the implicit swapchain (%08x).\n", hr); + if (SUCCEEDED(hr)) + { + hr = IDirect3DSwapChain9_QueryInterface(swapchain, &IID_IDirect3DSwapChain9Ex, (void **)&swapchainEx); + ok(hr == D3D_OK, + "IDirect3DSwapChain9::QueryInterface for IID_IDirect3DSwapChain9Ex returned %08x, expected D3D_OK.\n", + hr); + ok(swapchainEx != NULL && swapchainEx != (void *)0xdeadbeef, + "QueryInterface returned interface %p, expected != NULL && != 0xdeadbeef.\n", swapchainEx); + if (swapchainEx) + IDirect3DSwapChain9Ex_Release(swapchainEx); + } + if (swapchain) + IDirect3DSwapChain9_Release(swapchain); + if(deviceEx) IDirect3DDevice9Ex_Release(deviceEx); IDirect3DDevice9_Release(device); -- 2.11.4.GIT