Henri Verbeet : d3d8: Properly handle unsetting the pixelshader in SetPixelShader().
Alexandre Julliard
julliard at winehq.org
Tue Mar 24 09:01:57 CDT 2009
Module: wine
Branch: master
Commit: 3f559f26d64f251ed1fb4df92afd04c11aa7dd3e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3f559f26d64f251ed1fb4df92afd04c11aa7dd3e
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Tue Mar 24 10:09:21 2009 +0100
d3d8: Properly handle unsetting the pixelshader in SetPixelShader().
---
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;
}
More information about the wine-cvs
mailing list