Module: wine Branch: master Commit: b7ac22004fc2ced3914a31df7da91cb24e65186f URL: http://source.winehq.org/git/wine.git/?a=commit;h=b7ac22004fc2ced3914a31df7d...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Tue May 12 16:19:56 2009 +0200
wined3d: Add missing GL locking to shader_backend_t.shader_select() calls.
---
dlls/wined3d/context.c | 3 +++ dlls/wined3d/glsl_shader.c | 8 ++++++++ 2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 803a7cc..0fe00fc 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -1120,7 +1120,10 @@ static inline void SetupForBlit(IWineD3DDeviceImpl *This, WineD3DContext *contex /* TODO: Use a display list */
/* Disable shaders */ + ENTER_GL(); This->shader_backend->shader_select((IWineD3DDevice *)This, FALSE, FALSE); + LEAVE_GL(); + Context_MarkStateDirty(context, STATE_VSHADER, StateTable); Context_MarkStateDirty(context, STATE_PIXELSHADER, StateTable);
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 8316a0e..44e0eea 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -3889,12 +3889,20 @@ static void shader_glsl_destroy(IWineD3DBaseShader *iface) { ps = (IWineD3DPixelShaderImpl *) This; if(ps->num_gl_shaders == 0) return; if (priv->glsl_program && (IWineD3DBaseShader *)priv->glsl_program->pshader == iface) + { + ENTER_GL(); shader_glsl_select(This->baseShader.device, FALSE, FALSE); + LEAVE_GL(); + } } else { vs = (IWineD3DVertexShaderImpl *) This; if(vs->num_gl_shaders == 0) return; if (priv->glsl_program && (IWineD3DBaseShader *)priv->glsl_program->vshader == iface) + { + ENTER_GL(); shader_glsl_select(This->baseShader.device, FALSE, FALSE); + LEAVE_GL(); + } }
linked_programs = &This->baseShader.linked_programs;