[D3D] Some locking fixes

Lionel Ulmer lionel.ulmer at free.fr
Mon May 26 04:07:19 CDT 2003


Changelog:
 - some threading fixes (prevents some dead-locks)

-- 
		 Lionel Ulmer - http://www.bbrox.org/
-------------- next part --------------
--- dlls/ddraw_CVS/d3ddevice/mesa.c	Mon May 26 10:05:22 2003
+++ dlls/ddraw/d3ddevice/mesa.c	Mon May 26 10:48:21 2003
@@ -1639,6 +1639,8 @@
         This->state_block.texture_stage_state[dwStage][D3DTSS_ADDRESSU - 1] = dwState;
 	This->state_block.texture_stage_state[dwStage][D3DTSS_ADDRESSV - 1] = dwState;
     }
+
+    ENTER_GL();
     
     switch (d3dTexStageStateType) {
         case D3DTSS_MINFILTER:
@@ -1979,7 +1981,9 @@
 	    FIXME(" Unhandled stage type : %s => %08lx\n", type, dwState);
 	    break;
     }
-   
+
+    LEAVE_GL();
+    
     return DD_OK;
 }
 
@@ -3031,7 +3035,9 @@
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, max_tex);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_tex);
     glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, tex_env);
+    LEAVE_GL();
     d3d_dev->matrices_updated(d3d_dev, TEXMAT0_CHANGED);
+    ENTER_GL();
 #if 0
     /* I keep this code here as it's very useful to debug :-) */
     {
--- dlls/ddraw_CVS/d3dtexture.c	Mon May 26 10:05:23 2003
+++ dlls/ddraw/d3dtexture.c	Mon May 26 11:05:08 2003
@@ -723,6 +723,7 @@
 		glReadBuffer(GL_BACK);
 	    else {
 		ERR("Wrong surface type for locking !\n");
+		glBindTexture(GL_TEXTURE_2D, cur_tex);
 		LEAVE_GL();
 		return DDERR_INVALIDPARAMS;
 	    }


More information about the wine-patches mailing list