[PATCH 07/11] d3d8: It's not an error to have a NULL texture bound to a stage.
Henri Verbeet
hverbeet at codeweavers.com
Fri Sep 25 06:31:47 CDT 2009
---
dlls/d3d8/device.c | 24 +++++++++++++++++-------
1 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index 9bdd016..2a9babf 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -1471,8 +1471,8 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetClipStatus(LPDIRECT3DDEVICE8 iface
static HRESULT WINAPI IDirect3DDevice8Impl_GetTexture(LPDIRECT3DDEVICE8 iface, DWORD Stage,IDirect3DBaseTexture8** ppTexture) {
IDirect3DDevice8Impl *This = (IDirect3DDevice8Impl *)iface;
- IWineD3DBaseTexture *retTexture = NULL;
- HRESULT rc = D3D_OK;
+ IWineD3DBaseTexture *retTexture;
+ HRESULT hr;
TRACE("(%p) Relay\n" , This);
@@ -1481,17 +1481,27 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetTexture(LPDIRECT3DDEVICE8 iface, D
}
wined3d_mutex_lock();
- rc = IWineD3DDevice_GetTexture(This->WineD3DDevice, Stage, &retTexture);
- if (rc == D3D_OK && NULL != retTexture) {
+ hr = IWineD3DDevice_GetTexture(This->WineD3DDevice, Stage, &retTexture);
+ if (FAILED(hr))
+ {
+ WARN("Failed to get texture for stage %u, hr %#x.\n", Stage, hr);
+ wined3d_mutex_unlock();
+ *ppTexture = NULL;
+ return hr;
+ }
+
+ if (retTexture)
+ {
IWineD3DBaseTexture_GetParent(retTexture, (IUnknown **)ppTexture);
IWineD3DBaseTexture_Release(retTexture);
- } else {
- FIXME("Call to get texture (%d) failed (%p)\n", Stage, retTexture);
+ }
+ else
+ {
*ppTexture = NULL;
}
wined3d_mutex_unlock();
- return rc;
+ return D3D_OK;
}
static HRESULT WINAPI IDirect3DDevice8Impl_SetTexture(LPDIRECT3DDEVICE8 iface, DWORD Stage, IDirect3DBaseTexture8* pTexture) {
--
1.6.0.6
More information about the wine-patches
mailing list