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, ¶ms );
@@ -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, ¶ms );
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, ¶ms );
--
Alexandre Julliard
[EMAIL PROTECTED]