From: Matteo Bruni Subject: [PATCH 1/5] d3d9/tests: Add a test for Reset() with bound DEFAULT resources. Message-Id: <20190212172601.24407-1-mbruni@codeweavers.com> Date: Tue, 12 Feb 2019 18:25:57 +0100 Signed-off-by: Matteo Bruni --- dlls/d3d9/tests/device.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index ad1d2899a14..e9ad3c70baa 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -1836,6 +1836,7 @@ static void test_reset(void) IDirect3DIndexBuffer9 *ib; DEVMODEW devmode; IDirect3D9 *d3d; + ULONG refcount; D3DCAPS9 caps; DWORD value; HWND hwnd; @@ -2187,6 +2188,38 @@ static void test_reset(void) skip("Volume textures not supported.\n"); } + /* Test with DEFAULT pool resources bound but otherwise not referenced. */ + hr = IDirect3DDevice9_CreateVertexBuffer(device1, 16, 0, + D3DFVF_XYZ, D3DPOOL_DEFAULT, &vb, NULL); + ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); + hr = IDirect3DDevice9_SetStreamSource(device1, 0, vb, 0, 16); + ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); + refcount = IDirect3DVertexBuffer9_Release(vb); + ok(!refcount, "Unexpected refcount %u.\n", refcount); + hr = IDirect3DDevice9_CreateIndexBuffer(device1, 16, 0, + D3DFMT_INDEX16, D3DPOOL_DEFAULT, &ib, NULL); + ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); + hr = IDirect3DDevice9_SetIndices(device1, ib); + ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); + refcount = IDirect3DIndexBuffer9_Release(ib); + ok(!refcount, "Unexpected refcount %u.\n", refcount); + hr = IDirect3DDevice9_CreateTexture(device1, 16, 16, 0, 0, + D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &texture, NULL); + ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); + hr = IDirect3DDevice9_SetTexture(device1, i, (IDirect3DBaseTexture9 *)texture); + ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); + + hr = IDirect3DDevice9_Reset(device1, &d3dpp); + ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr); + + hr = IDirect3DDevice9_GetIndices(device1, &ib); + todo_wine ok(hr == D3DERR_INVALIDCALL, "Got unexpected hr %#x.\n", hr); + refcount = IDirect3DTexture9_Release(texture); + ok(!refcount, "Unexpected refcount %u.\n", refcount); + + hr = IDirect3DDevice9_Reset(device1, &d3dpp); + ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr); + /* Scratch, sysmem and managed pools are fine */ hr = IDirect3DDevice9_CreateOffscreenPlainSurface(device1, 16, 16, D3DFMT_R5G6B5, D3DPOOL_SCRATCH, &surface, NULL); ok(hr == D3D_OK, "IDirect3DDevice9_CreateOffscreenPlainSurface returned %08x\n", hr); @@ -2368,12 +2401,12 @@ cleanup: HeapFree(GetProcessHeap(), 0, modes); if (device2) { - UINT refcount = IDirect3DDevice9_Release(device2); + refcount = IDirect3DDevice9_Release(device2); ok(!refcount, "Device has %u references left.\n", refcount); } if (device1) { - UINT refcount = IDirect3DDevice9_Release(device1); + refcount = IDirect3DDevice9_Release(device1); ok(!refcount, "Device has %u references left.\n", refcount); } IDirect3D9_Release(d3d); -- 2.19.2