d3d9: Use separate codepaths for failure and NULL return values in GetVertexShader() / GetPixelShader().
Henri Verbeet
hverbeet at codeweavers.com
Mon Dec 29 09:31:22 CST 2008
---
dlls/d3d9/pixelshader.c | 20 +++++++++++++++-----
dlls/d3d9/vertexshader.c | 19 ++++++++++++++-----
2 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/dlls/d3d9/pixelshader.c b/dlls/d3d9/pixelshader.c
index 059116a..dddda28 100644
--- a/dlls/d3d9/pixelshader.c
+++ b/dlls/d3d9/pixelshader.c
@@ -170,11 +170,21 @@ HRESULT WINAPI IDirect3DDevice9Impl_GetPixelShader(LPDIRECT3DDEVICE9EX iface, ID
EnterCriticalSection(&d3d9_cs);
hrc = IWineD3DDevice_GetPixelShader(This->WineD3DDevice, &object);
- if (hrc == D3D_OK && object != NULL) {
- hrc = IWineD3DPixelShader_GetParent(object, (IUnknown **)ppShader);
- IWineD3DPixelShader_Release(object);
- } else {
- *ppShader = NULL;
+ if (SUCCEEDED(hrc))
+ {
+ if (object)
+ {
+ hrc = IWineD3DPixelShader_GetParent(object, (IUnknown **)ppShader);
+ IWineD3DPixelShader_Release(object);
+ }
+ else
+ {
+ *ppShader = NULL;
+ }
+ }
+ else
+ {
+ WARN("(%p) : Call to IWineD3DDevice_GetPixelShader failed %u (device %p)\n", This, hrc, This->WineD3DDevice);
}
LeaveCriticalSection(&d3d9_cs);
diff --git a/dlls/d3d9/vertexshader.c b/dlls/d3d9/vertexshader.c
index 6172225..6478b68 100644
--- a/dlls/d3d9/vertexshader.c
+++ b/dlls/d3d9/vertexshader.c
@@ -166,11 +166,20 @@ HRESULT WINAPI IDirect3DDevice9Impl_GetVertexShader(LPDIRECT3DDEVICE9EX iface, I
TRACE("(%p) : Relay device@%p\n", This, This->WineD3DDevice);
EnterCriticalSection(&d3d9_cs);
hrc = IWineD3DDevice_GetVertexShader(This->WineD3DDevice, &pShader);
- if(hrc == D3D_OK && pShader != NULL){
- hrc = IWineD3DVertexShader_GetParent(pShader, (IUnknown **)ppShader);
- IWineD3DVertexShader_Release(pShader);
- } else {
- *ppShader = NULL;
+ if (SUCCEEDED(hrc))
+ {
+ if (pShader)
+ {
+ hrc = IWineD3DVertexShader_GetParent(pShader, (IUnknown **)ppShader);
+ IWineD3DVertexShader_Release(pShader);
+ }
+ else
+ {
+ *ppShader = NULL;
+ }
+ }
+ else
+ {
WARN("(%p) : Call to IWineD3DDevice_GetVertexShader failed %u (device %p)\n", This, hrc, This->WineD3DDevice);
}
LeaveCriticalSection(&d3d9_cs);
--
1.6.0.6
--------------070708090205020501030800--
More information about the wine-patches
mailing list