diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index d126860..3f5c2e1 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -253,6 +253,8 @@ static void test_refcount(void) IDirect3D9 *pD3d = NULL; IDirect3DDevice9 *pDevice = NULL; IDirect3DVertexBuffer9 *pVertexBuffer = NULL; + IDirect3DVertexBuffer9 *pVertexBuffer2 = NULL; + IDirect3DVertexBuffer9 *pVertexBuffer3 = NULL; IDirect3DIndexBuffer9 *pIndexBuffer = NULL; IDirect3DVertexDeclaration9 *pVertexDeclaration = NULL; IDirect3DVertexShader9 *pVertexShader = NULL; @@ -270,6 +272,7 @@ static void test_refcount(void) IDirect3DQuery9 *pQuery = NULL; D3DPRESENT_PARAMETERS d3dpp; D3DDISPLAYMODE d3ddm; + UINT offset, stride; int refcount = 0, tmp; D3DVERTEXELEMENT9 decl[] = @@ -360,8 +363,26 @@ static void test_refcount(void) hr = IDirect3DDevice9_EndStateBlock( pDevice, &pStateBlock1 ); CHECK_CALL( hr, "EndStateBlock", pDevice, ++refcount ); + if(pVertexBuffer) + { + hr = IDirect3DDevice9_SetStreamSource(pDevice, 0, pVertexBuffer, 16, 32); + ok(hr == D3D_OK, "IDirect3DDevice9_SetStreamSource returned %s\n", DXGetErrorString9(hr)); + CHECK_CALL( hr, "SetStreamSource", pVertexBuffer, 1 ); + CHECK_CALL( hr, "SetStreamSource", pDevice, refcount ); + + hr = IDirect3DDevice9_GetStreamSource(pDevice, 0, &pVertexBuffer2, &stride, &offset); + ok(pVertexBuffer == pVertexBuffer2, "Got wrong buffer %p\n", pVertexBuffer2); + CHECK_CALL( hr, "GetStreamSource", pVertexBuffer2, 2 ); + CHECK_CALL( hr, "GetStreamSource", pDevice, refcount ); + + hr = IDirect3DDevice9_GetStreamSource(pDevice, 0, &pVertexBuffer3, &stride, &offset); + ok(pVertexBuffer == pVertexBuffer3, "Got wrong buffer %p\n", pVertexBuffer2); + CHECK_CALL( hr, "GetStreamSource", pVertexBuffer3, 3 ); + CHECK_CALL( hr, "GetStreamSource", pDevice, refcount ); + } + cleanup: CHECK_RELEASE(pDevice, pDevice, --refcount); /* Buffers */ - CHECK_RELEASE(pVertexBuffer, pDevice, --refcount); CHECK_RELEASE(pIndexBuffer, pDevice, --refcount); + CHECK_RELEASE(pVertexBuffer, pDevice, refcount); + CHECK_CALL( D3D_OK, "GetStreamSource", pVertexBuffer, 2 ); + CHECK_RELEASE(pVertexBuffer, pDevice, refcount); + CHECK_CALL( D3D_OK, "GetStreamSource", pVertexBuffer, 1 ); + CHECK_RELEASE(pVertexBuffer, pDevice, --refcount); /* Shaders */ CHECK_RELEASE(pVertexDeclaration, pDevice, --refcount); CHECK_RELEASE(pVertexShader, pDevice, --refcount);