From 59268f792413e69081502f22d33b9cea55c6880d Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Fri, 29 May 2009 09:13:21 +0200 Subject: [PATCH] d3d9: Having a NULL rendertarget isn't a failure. --- dlls/d3d9/device.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index e5ca4c4afd0..9508ff5c693 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -851,8 +851,8 @@ static HRESULT WINAPI IDirect3DDevice9Impl_SetRenderTarget(LPDIRECT3DDEVICE9EX static HRESULT WINAPI IDirect3DDevice9Impl_GetRenderTarget(LPDIRECT3DDEVICE9EX iface, DWORD RenderTargetIndex, IDirect3DSurface9 **ppRenderTarget) { IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface; - HRESULT hr = D3D_OK; IWineD3DSurface *pRenderTarget; + HRESULT hr; TRACE("(%p) Relay\n" , This); @@ -863,13 +863,20 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetRenderTarget(LPDIRECT3DDEVICE9EX EnterCriticalSection(&d3d9_cs); hr=IWineD3DDevice_GetRenderTarget(This->WineD3DDevice,RenderTargetIndex,&pRenderTarget); - if (hr == D3D_OK && pRenderTarget != NULL) { - IWineD3DSurface_GetParent(pRenderTarget,(IUnknown**)ppRenderTarget); - IWineD3DSurface_Release(pRenderTarget); - } else { - FIXME("Call to IWineD3DDevice_GetRenderTarget failed\n"); + if (FAILED(hr)) + { + FIXME("Call to IWineD3DDevice_GetRenderTarget failed, hr %#x\n", hr); + } + else if (!pRenderTarget) + { *ppRenderTarget = NULL; } + else + { + IWineD3DSurface_GetParent(pRenderTarget, (IUnknown **)ppRenderTarget); + IWineD3DSurface_Release(pRenderTarget); + } + LeaveCriticalSection(&d3d9_cs); return hr;