Henri Verbeet : d3d8: It' s not an error to have a NULL texture bound to a stage.

Alexandre Julliard julliard at winehq.org
Fri Sep 25 10:25:27 CDT 2009


Module: wine
Branch: master
Commit: 906071aa9ffb3bef34af512b006e00493053a082
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=906071aa9ffb3bef34af512b006e00493053a082

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Fri Sep 25 13:31:47 2009 +0200

d3d8: It's not an error to have a NULL texture bound to a stage.

---

 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) {




More information about the wine-cvs mailing list