All pastes #159072 Raw Edit

vitamin

public text v1 · immutable
·published 2006-09-02 17:29 UTC
rendered paste body
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);