gerard patel <[EMAIL PROTECTED]> writes:

> Write 16 bits (I think it came with Windows 3.11) reports now :
> err:clipping:CLIPPING_UpdateGCRegion DC is dirty. Please report this.  
> 
> This error message seems recent :
>    if (dc->w.flags & DC_DIRTY) ERR( "DC is dirty. Please report this.\n" );  

This is because the DC update stuff is now done only in DC_GetDCUpdate
to play correctly with GDI locking. This should fix the problem:

Index: graphics/bitblt.c
===================================================================
RCS file: /opt/cvs-commit/wine/graphics/bitblt.c,v
retrieving revision 1.9
diff -u -r1.9 bitblt.c
--- graphics/bitblt.c   2000/08/19 21:38:55     1.9
+++ graphics/bitblt.c   2000/08/21 22:32:17
@@ -26,7 +26,7 @@
 BOOL WINAPI PatBlt( HDC hdc, INT left, INT top,
                         INT width, INT height, DWORD rop)
 {
-    DC * dc = DC_GetDCPtr( hdc );
+    DC * dc = DC_GetDCUpdate( hdc );
     BOOL bRet = FALSE;
 
     if (!dc) return FALSE;
Index: graphics/x11drv/bitblt.c
===================================================================
RCS file: /opt/cvs-commit/wine/graphics/x11drv/bitblt.c,v
retrieving revision 1.22
diff -u -r1.22 bitblt.c
--- graphics/x11drv/bitblt.c    2000/06/08 19:23:12     1.22
+++ graphics/x11drv/bitblt.c    2000/08/21 22:32:18
@@ -1471,8 +1471,6 @@
     params.heightSrc = 0;
     params.rop = rop;
 
-    if (dc->w.flags & DC_DIRTY) CLIPPING_UpdateGCRegion( dc );
-
     X11DRV_DIB_UpdateDIBSection( dc, FALSE );
     EnterCriticalSection( &X11DRV_CritSection );
     result = (BOOL)CALL_LARGE_STACK( BITBLT_DoStretchBlt, &params );
@@ -1507,9 +1505,6 @@
     X11DRV_DIB_UpdateDIBSection( dcDst, FALSE );
     X11DRV_DIB_UpdateDIBSection( dcSrc, FALSE );
 
-    if (dcDst->w.flags & DC_DIRTY) CLIPPING_UpdateGCRegion( dcDst );
-    if (dcSrc && (dcSrc->w.flags & DC_DIRTY)) CLIPPING_UpdateGCRegion( dcSrc );
-
     EnterCriticalSection( &X11DRV_CritSection );
     result = (BOOL)CALL_LARGE_STACK( BITBLT_DoStretchBlt, &params );
     LeaveCriticalSection( &X11DRV_CritSection );
@@ -1543,9 +1538,6 @@
 
     X11DRV_DIB_UpdateDIBSection( dcDst, FALSE );
     X11DRV_DIB_UpdateDIBSection( dcSrc, FALSE );
-
-    if (dcDst->w.flags & DC_DIRTY) CLIPPING_UpdateGCRegion( dcDst );
-    if (dcSrc && (dcSrc->w.flags & DC_DIRTY)) CLIPPING_UpdateGCRegion( dcSrc );
 
     EnterCriticalSection( &X11DRV_CritSection );
     result = (BOOL)CALL_LARGE_STACK( BITBLT_DoStretchBlt, &params );

-- 
Alexandre Julliard
[EMAIL PROTECTED]

Reply via email to