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

This commit is contained in:
Alexandre Julliard 2007-09-24 18:16:29 +02:00
parent a5a0d3c23b
commit 0c4f81eefc

View File

@ -129,7 +129,7 @@ static inline void INTERNAL_LPTODP_FLOAT(DC *dc, FLOAT_POINT *point)
BOOL WINAPI BeginPath(HDC hdc)
{
BOOL ret = TRUE;
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
if(!dc) return FALSE;
@ -148,7 +148,7 @@ BOOL WINAPI BeginPath(HDC hdc)
dc->path.state=PATH_Open;
}
}
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return ret;
}
@ -159,7 +159,7 @@ BOOL WINAPI BeginPath(HDC hdc)
BOOL WINAPI EndPath(HDC hdc)
{
BOOL ret = TRUE;
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
if(!dc) return FALSE;
@ -176,7 +176,7 @@ BOOL WINAPI EndPath(HDC hdc)
/* Set flag to indicate that path is finished */
else dc->path.state=PATH_Closed;
}
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return ret;
}
@ -198,7 +198,7 @@ BOOL WINAPI EndPath(HDC hdc)
BOOL WINAPI AbortPath( HDC hdc )
{
BOOL ret = TRUE;
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
if(!dc) return FALSE;
@ -206,7 +206,7 @@ BOOL WINAPI AbortPath( HDC hdc )
ret = dc->funcs->pAbortPath(dc->physDev);
else /* Remove all entries from the path */
PATH_EmptyPath( &dc->path );
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return ret;
}
@ -219,7 +219,7 @@ BOOL WINAPI AbortPath( HDC hdc )
BOOL WINAPI CloseFigure(HDC hdc)
{
BOOL ret = TRUE;
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
if(!dc) return FALSE;
@ -245,7 +245,7 @@ BOOL WINAPI CloseFigure(HDC hdc)
}
}
}
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return ret;
}
@ -258,7 +258,7 @@ INT WINAPI GetPath(HDC hdc, LPPOINT pPoints, LPBYTE pTypes,
{
INT ret = -1;
GdiPath *pPath;
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
if(!dc) return -1;
@ -293,7 +293,7 @@ INT WINAPI GetPath(HDC hdc, LPPOINT pPoints, LPBYTE pTypes,
else ret = pPath->numEntriesUsed;
}
done:
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return ret;
}
@ -311,7 +311,7 @@ HRGN WINAPI PathToRegion(HDC hdc)
{
GdiPath *pPath;
HRGN hrgnRval = 0;
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
/* Get pointer to path */
if(!dc) return 0;
@ -328,7 +328,7 @@ HRGN WINAPI PathToRegion(HDC hdc)
else
hrgnRval=0;
}
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return hrgnRval;
}
@ -414,7 +414,7 @@ static BOOL PATH_FillPath(DC *dc, GdiPath *pPath)
*/
BOOL WINAPI FillPath(HDC hdc)
{
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
BOOL bRet = FALSE;
if(!dc) return FALSE;
@ -431,7 +431,7 @@ BOOL WINAPI FillPath(HDC hdc)
PATH_EmptyPath(&dc->path);
}
}
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return bRet;
}
@ -446,7 +446,7 @@ BOOL WINAPI SelectClipPath(HDC hdc, INT iMode)
GdiPath *pPath;
HRGN hrgnPath;
BOOL success = FALSE;
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
if(!dc) return FALSE;
@ -471,7 +471,7 @@ BOOL WINAPI SelectClipPath(HDC hdc, INT iMode)
/* FIXME: Should this function delete the path even if it failed? */
}
}
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return success;
}
@ -1698,7 +1698,7 @@ static void PATH_NormalizePoint(FLOAT_POINT corners[],
BOOL WINAPI FlattenPath(HDC hdc)
{
BOOL ret = FALSE;
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
if(!dc) return FALSE;
@ -1709,7 +1709,7 @@ BOOL WINAPI FlattenPath(HDC hdc)
if(pPath->state != PATH_Closed)
ret = PATH_FlattenPath(pPath);
}
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return ret;
}
@ -2191,7 +2191,7 @@ static BOOL PATH_WidenPath(DC *dc)
*/
BOOL WINAPI StrokeAndFillPath(HDC hdc)
{
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
BOOL bRet = FALSE;
if(!dc) return FALSE;
@ -2204,7 +2204,7 @@ BOOL WINAPI StrokeAndFillPath(HDC hdc)
if(bRet) bRet = PATH_StrokePath(dc, &dc->path);
if(bRet) PATH_EmptyPath(&dc->path);
}
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return bRet;
}
@ -2216,7 +2216,7 @@ BOOL WINAPI StrokeAndFillPath(HDC hdc)
*/
BOOL WINAPI StrokePath(HDC hdc)
{
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
GdiPath *pPath;
BOOL bRet = FALSE;
@ -2231,7 +2231,7 @@ BOOL WINAPI StrokePath(HDC hdc)
bRet = PATH_StrokePath(dc, pPath);
PATH_EmptyPath(pPath);
}
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return bRet;
}
@ -2243,7 +2243,7 @@ BOOL WINAPI StrokePath(HDC hdc)
*/
BOOL WINAPI WidenPath(HDC hdc)
{
DC *dc = DC_GetDCPtr( hdc );
DC *dc = get_dc_ptr( hdc );
BOOL ret = FALSE;
if(!dc) return FALSE;
@ -2252,6 +2252,6 @@ BOOL WINAPI WidenPath(HDC hdc)
ret = dc->funcs->pWidenPath(dc->physDev);
else
ret = PATH_WidenPath(dc);
DC_ReleaseDCPtr( dc );
release_dc_ptr( dc );
return ret;
}