Module: wine Branch: master Commit: 4d0a609452156b75ca09227d68b5a2317ae94888 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4d0a609452156b75ca09227d68...
Author: Stefan Dösinger stefan@codeweavers.com Date: Tue Jan 8 20:53:17 2008 +0100
wined3d: Reset the shader state on shader_*_destroy.
---
dlls/wined3d/arb_program_shader.c | 4 ++++ dlls/wined3d/glsl_shader.c | 2 ++ 2 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index aad2865..6bdf265 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -1733,6 +1733,10 @@ static void shader_arb_cleanup(IWineD3DDevice *iface) { }
static void shader_arb_destroy(IWineD3DBaseShader *iface) { + IWineD3DBaseShaderImpl *This = (IWineD3DBaseShaderImpl *) iface; + + This->baseShader.prgId = 0; + This->baseShader.is_compiled = FALSE; }
const shader_backend_t arb_program_shader_backend = { diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 07415d2..64ca8b1 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -3278,6 +3278,8 @@ static void shader_glsl_destroy(IWineD3DBaseShader *iface) { TRACE("Deleting shader object %u\n", This->baseShader.prgId); GL_EXTCALL(glDeleteObjectARB(This->baseShader.prgId)); checkGLcall("glDeleteObjectARB"); + This->baseShader.prgId = 0; + This->baseShader.is_compiled = FALSE; }
const shader_backend_t glsl_shader_backend = {