diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c index 381eedceb05..64d3ea82dce 100644 --- a/dlls/d3d8/tests/device.c +++ b/dlls/d3d8/tests/device.c @@ -342,8 +342,14 @@ static void test_refcount(void) todo_wine CHECK_REFCOUNT( pRenderTarget, 2); todo_wine CHECK_RELEASE_REFCOUNT( pRenderTarget, 1); todo_wine CHECK_RELEASE_REFCOUNT( pRenderTarget, 0); + CHECK_REFCOUNT( pDevice, --refcount); + + /* The render target is released with the device, so AddRef with refcount=0 is fine here. */ + todo_wine CHECK_ADDREF_REFCOUNT(pRenderTarget, 1); + todo_wine CHECK_REFCOUNT(pDevice, ++refcount); + todo_wine CHECK_RELEASE_REFCOUNT(pRenderTarget, 0); + CHECK_REFCOUNT(pDevice, --refcount); } - CHECK_REFCOUNT( pDevice, --refcount); /* Render target and back buffer are identical. */ hr = IDirect3DDevice8_GetBackBuffer(pDevice, 0, 0, &pBackBuffer); @@ -371,9 +377,15 @@ static void test_refcount(void) todo_wine CHECK_REFCOUNT(pDevice, refcount); todo_wine CHECK_RELEASE_REFCOUNT( pStencilSurface, 0); + CHECK_REFCOUNT( pDevice, --refcount); + + /* The stencil surface is released with the device, so AddRef with refcount=0 is fine here. */ + todo_wine CHECK_ADDREF_REFCOUNT(pStencilSurface, 1); + todo_wine CHECK_REFCOUNT(pDevice, ++refcount); + todo_wine CHECK_RELEASE_REFCOUNT(pStencilSurface, 0); + CHECK_REFCOUNT(pDevice, --refcount); pStencilSurface = NULL; } - CHECK_REFCOUNT( pDevice, --refcount); /* Buffers */ hr = IDirect3DDevice8_CreateIndexBuffer( pDevice, 16, 0, D3DFMT_INDEX32, D3DPOOL_DEFAULT, &pIndexBuffer ); @@ -482,10 +494,16 @@ static void test_refcount(void) todo_wine CHECK_SURFACE_CONTAINER( pBackBuffer, IID_IDirect3DDevice8, pDevice); todo_wine CHECK_REFCOUNT( pBackBuffer, 1); todo_wine CHECK_RELEASE_REFCOUNT( pBackBuffer, 0); + CHECK_REFCOUNT( pDevice, --refcount); + + /* The back buffer is released with the swapchain, so AddRef with refcount=0 is fine here. */ + todo_wine CHECK_ADDREF_REFCOUNT(pBackBuffer, 1); + todo_wine CHECK_REFCOUNT(pDevice, ++refcount); + todo_wine CHECK_RELEASE_REFCOUNT(pBackBuffer, 0); + CHECK_REFCOUNT(pDevice, --refcount); pBackBuffer = NULL; } CHECK_REFCOUNT( pSwapChain, 1); - CHECK_REFCOUNT( pDevice, --refcount); } if(pVertexBuffer)