wined3d: Add missing GL locking to shader_backend_t.shader_select() calls.

Henri Verbeet hverbeet at codeweavers.com
Tue May 12 09:19:56 CDT 2009


---
 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;
-- 
1.6.0.6



--------------070800030606080003040802--



More information about the wine-patches mailing list