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 = {