From 4d0a609452156b75ca09227d68b5a2317ae94888 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20D=C3=B6singer?= Date: Tue, 8 Jan 2008 20:53:17 +0100 Subject: [PATCH] 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(+) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index aad28653920..6bdf2656f96 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 07415d25f1e..64ca8b1629a 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 = { -- 2.11.4.GIT