d3d9: StateBlock is also created in EndStateBlock. With tests.
This commit is contained in:
parent
a9e2fc287c
commit
5eeead1fd7
|
@ -150,12 +150,17 @@ HRESULT WINAPI IDirect3DDevice9Impl_EndStateBlock(LPDIRECT3DDEVICE9 iface, IDi
|
||||||
}
|
}
|
||||||
/* allocate a new IDirectD3DStateBlock */
|
/* allocate a new IDirectD3DStateBlock */
|
||||||
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY ,sizeof(IDirect3DStateBlock9Impl));
|
object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY ,sizeof(IDirect3DStateBlock9Impl));
|
||||||
|
if (!object) {
|
||||||
|
FIXME("(%p) Failed to allocate %d bytes\n", This, sizeof(IDirect3DStateBlock9Impl));
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
}
|
||||||
object->ref = 1;
|
object->ref = 1;
|
||||||
object->lpVtbl = &Direct3DStateBlock9_Vtbl;
|
object->lpVtbl = &Direct3DStateBlock9_Vtbl;
|
||||||
|
object->wineD3DStateBlock = wineD3DStateBlock;
|
||||||
object->wineD3DStateBlock=wineD3DStateBlock;
|
|
||||||
|
IUnknown_AddRef(iface);
|
||||||
*ppSB=(IDirect3DStateBlock9*)object;
|
object->parentDevice = iface;
|
||||||
|
*ppSB=(IDirect3DStateBlock9*)object;
|
||||||
TRACE("(%p)Returning %p %p\n", This, *ppSB, wineD3DStateBlock);
|
TRACE("(%p)Returning %p %p\n", This, *ppSB, wineD3DStateBlock);
|
||||||
return D3D_OK;
|
return D3D_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,6 +201,7 @@ void test_refcount(void)
|
||||||
IDirect3DSurface9 *pRenderTarget = NULL;
|
IDirect3DSurface9 *pRenderTarget = NULL;
|
||||||
IDirect3DSurface9 *pTextureLevel = NULL;
|
IDirect3DSurface9 *pTextureLevel = NULL;
|
||||||
IDirect3DStateBlock9 *pStateBlock = NULL;
|
IDirect3DStateBlock9 *pStateBlock = NULL;
|
||||||
|
IDirect3DStateBlock9 *pStateBlock1 = NULL;
|
||||||
IDirect3DSwapChain9 *pSwapChain = NULL;
|
IDirect3DSwapChain9 *pSwapChain = NULL;
|
||||||
IDirect3DQuery9 *pQuery = NULL;
|
IDirect3DQuery9 *pQuery = NULL;
|
||||||
D3DPRESENT_PARAMETERS d3dpp;
|
D3DPRESENT_PARAMETERS d3dpp;
|
||||||
|
@ -302,6 +303,12 @@ void test_refcount(void)
|
||||||
hr = IDirect3DDevice9_CreateQuery( pDevice, D3DQUERYTYPE_EVENT, &pQuery );
|
hr = IDirect3DDevice9_CreateQuery( pDevice, D3DQUERYTYPE_EVENT, &pQuery );
|
||||||
CHECK_CALL( hr, "CreateQuery", pDevice, refcount+1 );
|
CHECK_CALL( hr, "CreateQuery", pDevice, refcount+1 );
|
||||||
|
|
||||||
|
refcount = get_refcount( (IUnknown *)pDevice );
|
||||||
|
hr = IDirect3DDevice9_BeginStateBlock( pDevice );
|
||||||
|
CHECK_CALL( hr, "BeginStateBlock", pDevice, refcount );
|
||||||
|
hr = IDirect3DDevice9_EndStateBlock( pDevice, &pStateBlock1 );
|
||||||
|
CHECK_CALL( hr, "EndStateBlock", pDevice, refcount+1 );
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (pDevice) IUnknown_Release( pDevice );
|
if (pDevice) IUnknown_Release( pDevice );
|
||||||
|
|
||||||
|
@ -327,6 +334,7 @@ cleanup:
|
||||||
if (pSwapChain) IUnknown_Release( pSwapChain );
|
if (pSwapChain) IUnknown_Release( pSwapChain );
|
||||||
*/
|
*/
|
||||||
if (pQuery) IUnknown_Release( pQuery );
|
if (pQuery) IUnknown_Release( pQuery );
|
||||||
|
if (pStateBlock1) IUnknown_Release( pStateBlock1 );
|
||||||
|
|
||||||
if (pD3d) IUnknown_Release( pD3d );
|
if (pD3d) IUnknown_Release( pD3d );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue