gdi32: Don't hold the GDI lock while calling the driver clipping functions.

This commit is contained in:
Alexandre Julliard 2007-09-24 18:19:14 +02:00
parent 2e2df3faf3
commit b12a782e5f
1 changed files with 10 additions and 10 deletions

View File

@ -172,7 +172,7 @@ INT16 WINAPI SelectVisRgn16( HDC16 hdc16, HRGN16 hrgn )
DC * dc; DC * dc;
if (!hrgn) return ERROR; if (!hrgn) return ERROR;
if (!(dc = DC_GetDCPtr( hdc ))) return ERROR; if (!(dc = get_dc_ptr( hdc ))) return ERROR;
TRACE("%p %04x\n", hdc, hrgn ); TRACE("%p %04x\n", hdc, hrgn );
@ -180,7 +180,7 @@ INT16 WINAPI SelectVisRgn16( HDC16 hdc16, HRGN16 hrgn )
retval = CombineRgn( dc->hVisRgn, HRGN_32(hrgn), 0, RGN_COPY ); retval = CombineRgn( dc->hVisRgn, HRGN_32(hrgn), 0, RGN_COPY );
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
DC_ReleaseDCPtr( dc ); release_dc_ptr( dc );
return retval; return retval;
} }
@ -478,14 +478,14 @@ INT WINAPI GetClipRgn( HDC hdc, HRGN hRgn )
{ {
INT ret = -1; INT ret = -1;
DC * dc; DC * dc;
if (hRgn && (dc = DC_GetDCPtr( hdc ))) if (hRgn && (dc = get_dc_ptr( hdc )))
{ {
if( dc->hClipRgn ) if( dc->hClipRgn )
{ {
if( CombineRgn(hRgn, dc->hClipRgn, 0, RGN_COPY) != ERROR ) ret = 1; if( CombineRgn(hRgn, dc->hClipRgn, 0, RGN_COPY) != ERROR ) ret = 1;
} }
else ret = 0; else ret = 0;
DC_ReleaseDCPtr( dc ); release_dc_ptr( dc );
} }
return ret; return ret;
} }
@ -497,13 +497,13 @@ INT WINAPI GetClipRgn( HDC hdc, HRGN hRgn )
INT WINAPI GetMetaRgn( HDC hdc, HRGN hRgn ) INT WINAPI GetMetaRgn( HDC hdc, HRGN hRgn )
{ {
INT ret = 0; INT ret = 0;
DC * dc = DC_GetDCPtr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (dc)
{ {
if (dc->hMetaRgn && CombineRgn( hRgn, dc->hMetaRgn, 0, RGN_COPY ) != ERROR) if (dc->hMetaRgn && CombineRgn( hRgn, dc->hMetaRgn, 0, RGN_COPY ) != ERROR)
ret = 1; ret = 1;
DC_ReleaseDCPtr( dc ); release_dc_ptr( dc );
} }
return ret; return ret;
} }
@ -544,7 +544,7 @@ INT16 WINAPI RestoreVisRgn16( HDC16 hdc16 )
{ {
struct saved_visrgn *saved; struct saved_visrgn *saved;
HDC hdc = HDC_32( hdc16 ); HDC hdc = HDC_32( hdc16 );
DC *dc = DC_GetDCPtr( hdc ); DC *dc = get_dc_ptr( hdc );
INT16 ret = ERROR; INT16 ret = ERROR;
if (!dc) return ERROR; if (!dc) return ERROR;
@ -559,7 +559,7 @@ INT16 WINAPI RestoreVisRgn16( HDC16 hdc16 )
HeapFree( GetProcessHeap(), 0, saved ); HeapFree( GetProcessHeap(), 0, saved );
CLIPPING_UpdateGCRegion( dc ); CLIPPING_UpdateGCRegion( dc );
done: done:
DC_ReleaseDCPtr( dc ); release_dc_ptr( dc );
return ret; return ret;
} }
@ -628,7 +628,7 @@ INT WINAPI SetMetaRgn( HDC hdc )
{ {
INT ret; INT ret;
RECT dummy; RECT dummy;
DC *dc = DC_GetDCPtr( hdc ); DC *dc = get_dc_ptr( hdc );
if (!dc) return ERROR; if (!dc) return ERROR;
@ -651,6 +651,6 @@ INT WINAPI SetMetaRgn( HDC hdc )
/* Note: no need to call CLIPPING_UpdateGCRegion, the overall clip region hasn't changed */ /* Note: no need to call CLIPPING_UpdateGCRegion, the overall clip region hasn't changed */
ret = GetRgnBox( dc->hMetaRgn, &dummy ); ret = GetRgnBox( dc->hMetaRgn, &dummy );
DC_ReleaseDCPtr( dc ); release_dc_ptr( dc );
return ret; return ret;
} }