From 1120f0f58539d5dc8a1fbdc025ce7230aa4f1ae4 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 6 Apr 2009 10:10:05 +0200 Subject: [PATCH] wined3d: Unset the current GLSL program when it's destroyed. --- dlls/wined3d/glsl_shader.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 9ea193ec4bb..965f6884140 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -3766,9 +3766,13 @@ static void shader_glsl_destroy(IWineD3DBaseShader *iface) { if(pshader) { ps = (IWineD3DPixelShaderImpl *) This; if(ps->num_gl_shaders == 0) return; + if (priv->glsl_program && (IWineD3DBaseShader *)priv->glsl_program->pshader == iface) + shader_glsl_select(This->baseShader.device, FALSE, FALSE); } else { vs = (IWineD3DVertexShaderImpl *) This; if(vs->num_gl_shaders == 0) return; + if (priv->glsl_program && (IWineD3DBaseShader *)priv->glsl_program->vshader == iface) + shader_glsl_select(This->baseShader.device, FALSE, FALSE); } linked_programs = &This->baseShader.linked_programs;