d3d9: StateBlock is also created in EndStateBlock. With tests.
This commit is contained in:
parent
a9e2fc287c
commit
5eeead1fd7
|
@ -150,11 +150,16 @@ HRESULT WINAPI IDirect3DDevice9Impl_EndStateBlock(LPDIRECT3DDEVICE9 iface, IDi
|
|||
}
|
||||
/* allocate a new IDirectD3DStateBlock */
|
||||
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->lpVtbl = &Direct3DStateBlock9_Vtbl;
|
||||
object->wineD3DStateBlock = wineD3DStateBlock;
|
||||
|
||||
object->wineD3DStateBlock=wineD3DStateBlock;
|
||||
|
||||
IUnknown_AddRef(iface);
|
||||
object->parentDevice = iface;
|
||||
*ppSB=(IDirect3DStateBlock9*)object;
|
||||
TRACE("(%p)Returning %p %p\n", This, *ppSB, wineD3DStateBlock);
|
||||
return D3D_OK;
|
||||
|
|
|
@ -201,6 +201,7 @@ void test_refcount(void)
|
|||
IDirect3DSurface9 *pRenderTarget = NULL;
|
||||
IDirect3DSurface9 *pTextureLevel = NULL;
|
||||
IDirect3DStateBlock9 *pStateBlock = NULL;
|
||||
IDirect3DStateBlock9 *pStateBlock1 = NULL;
|
||||
IDirect3DSwapChain9 *pSwapChain = NULL;
|
||||
IDirect3DQuery9 *pQuery = NULL;
|
||||
D3DPRESENT_PARAMETERS d3dpp;
|
||||
|
@ -302,6 +303,12 @@ void test_refcount(void)
|
|||
hr = IDirect3DDevice9_CreateQuery( pDevice, D3DQUERYTYPE_EVENT, &pQuery );
|
||||
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:
|
||||
if (pDevice) IUnknown_Release( pDevice );
|
||||
|
||||
|
@ -327,6 +334,7 @@ cleanup:
|
|||
if (pSwapChain) IUnknown_Release( pSwapChain );
|
||||
*/
|
||||
if (pQuery) IUnknown_Release( pQuery );
|
||||
if (pStateBlock1) IUnknown_Release( pStateBlock1 );
|
||||
|
||||
if (pD3d) IUnknown_Release( pD3d );
|
||||
|
||||
|
|
Loading…
Reference in New Issue