Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- I'm resending this patch unchanged since I can't reproduce the test failure and I don't feel comfortable with blindly changing the code.
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 7d8b4fdfcd4..bf64ddf1633 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);