d3d8: Properly handle unsetting the pixelshader in SetPixelShader().
Henri Verbeet
hverbeet at codeweavers.com
Tue Mar 24 04:09:21 CDT 2009
---
dlls/d3d8/device.c | 11 ++++++++++-
1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c
index 119d33d..be6bce7 100644
--- a/dlls/d3d8/device.c
+++ b/dlls/d3d8/device.c
@@ -2171,14 +2171,23 @@ static HRESULT WINAPI IDirect3DDevice8Impl_SetPixelShader(LPDIRECT3DDEVICE8 ifac
EnterCriticalSection(&d3d8_cs);
+ if (!pShader)
+ {
+ hr = IWineD3DDevice_SetPixelShader(This->WineD3DDevice, NULL);
+ LeaveCriticalSection(&d3d8_cs);
+ return hr;
+ }
+
shader = d3d8_get_object(&This->handle_table, pShader - (VS_HIGHESTFIXEDFXF + 1));
if (!shader)
{
WARN("Invalid handle (%#x) passed.\n", pShader);
+ LeaveCriticalSection(&d3d8_cs);
+ return D3DERR_INVALIDCALL;
}
TRACE("(%p) : Setting shader %p\n", This, shader);
- hr = IWineD3DDevice_SetPixelShader(This->WineD3DDevice, shader == NULL ? NULL :shader->wineD3DPixelShader);
+ hr = IWineD3DDevice_SetPixelShader(This->WineD3DDevice, shader->wineD3DPixelShader);
LeaveCriticalSection(&d3d8_cs);
return hr;
}
--
1.6.0.6
--------------060407000205080903030806--
More information about the wine-patches
mailing list