Commit e95cff03 authored by Alexandre Julliard's avatar Alexandre Julliard

gdi32: Always update the DC before looking for the physdev pointer.

parent 7eb0d62b
...@@ -518,7 +518,6 @@ BOOL WINAPI PatBlt( HDC hdc, INT left, INT top, INT width, INT height, DWORD rop ...@@ -518,7 +518,6 @@ BOOL WINAPI PatBlt( HDC hdc, INT left, INT top, INT width, INT height, DWORD rop
if ((dc = get_dc_ptr( hdc ))) if ((dc = get_dc_ptr( hdc )))
{ {
struct bitblt_coords dst; struct bitblt_coords dst;
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pPatBlt );
update_dc( dc ); update_dc( dc );
...@@ -538,8 +537,11 @@ BOOL WINAPI PatBlt( HDC hdc, INT left, INT top, INT width, INT height, DWORD rop ...@@ -538,8 +537,11 @@ BOOL WINAPI PatBlt( HDC hdc, INT left, INT top, INT width, INT height, DWORD rop
hdc, dst.log_x, dst.log_y, dst.log_width, dst.log_height, hdc, dst.log_x, dst.log_y, dst.log_width, dst.log_height,
dst.x, dst.y, dst.width, dst.height, wine_dbgstr_rect(&dst.visrect), rop ); dst.x, dst.y, dst.width, dst.height, wine_dbgstr_rect(&dst.visrect), rop );
if (!ret) ret = physdev->funcs->pPatBlt( physdev, &dst, rop ); if (!ret)
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pPatBlt );
ret = physdev->funcs->pPatBlt( physdev, &dst, rop );
}
release_dc_ptr( dc ); release_dc_ptr( dc );
} }
return ret; return ret;
...@@ -574,8 +576,6 @@ BOOL WINAPI StretchBlt( HDC hdcDst, INT xDst, INT yDst, INT widthDst, INT height ...@@ -574,8 +576,6 @@ BOOL WINAPI StretchBlt( HDC hdcDst, INT xDst, INT yDst, INT widthDst, INT height
if ((dcSrc = get_dc_ptr( hdcSrc ))) if ((dcSrc = get_dc_ptr( hdcSrc )))
{ {
struct bitblt_coords src, dst; struct bitblt_coords src, dst;
PHYSDEV src_dev = GET_DC_PHYSDEV( dcSrc, pStretchBlt );
PHYSDEV dst_dev = GET_DC_PHYSDEV( dcDst, pStretchBlt );
update_dc( dcSrc ); update_dc( dcSrc );
update_dc( dcDst ); update_dc( dcDst );
...@@ -604,7 +604,12 @@ BOOL WINAPI StretchBlt( HDC hdcDst, INT xDst, INT yDst, INT widthDst, INT height ...@@ -604,7 +604,12 @@ BOOL WINAPI StretchBlt( HDC hdcDst, INT xDst, INT yDst, INT widthDst, INT height
hdcDst, dst.log_x, dst.log_y, dst.log_width, dst.log_height, hdcDst, dst.log_x, dst.log_y, dst.log_width, dst.log_height,
dst.x, dst.y, dst.width, dst.height, wine_dbgstr_rect(&dst.visrect), rop ); dst.x, dst.y, dst.width, dst.height, wine_dbgstr_rect(&dst.visrect), rop );
if (!ret) ret = dst_dev->funcs->pStretchBlt( dst_dev, &dst, src_dev, &src, rop ); if (!ret)
{
PHYSDEV src_dev = GET_DC_PHYSDEV( dcSrc, pStretchBlt );
PHYSDEV dst_dev = GET_DC_PHYSDEV( dcDst, pStretchBlt );
ret = dst_dev->funcs->pStretchBlt( dst_dev, &dst, src_dev, &src, rop );
}
release_dc_ptr( dcSrc ); release_dc_ptr( dcSrc );
} }
release_dc_ptr( dcDst ); release_dc_ptr( dcDst );
...@@ -911,8 +916,6 @@ BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heig ...@@ -911,8 +916,6 @@ BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heig
if ((dcDst = get_dc_ptr( hdcDst ))) if ((dcDst = get_dc_ptr( hdcDst )))
{ {
struct bitblt_coords src, dst; struct bitblt_coords src, dst;
PHYSDEV src_dev = GET_DC_PHYSDEV( dcSrc, pAlphaBlend );
PHYSDEV dst_dev = GET_DC_PHYSDEV( dcDst, pAlphaBlend );
update_dc( dcSrc ); update_dc( dcSrc );
update_dc( dcDst ); update_dc( dcDst );
...@@ -921,12 +924,12 @@ BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heig ...@@ -921,12 +924,12 @@ BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heig
src.log_y = ySrc; src.log_y = ySrc;
src.log_width = widthSrc; src.log_width = widthSrc;
src.log_height = heightSrc; src.log_height = heightSrc;
src.layout = GetLayout( src_dev->hdc ); src.layout = GetLayout( hdcSrc );
dst.log_x = xDst; dst.log_x = xDst;
dst.log_y = yDst; dst.log_y = yDst;
dst.log_width = widthDst; dst.log_width = widthDst;
dst.log_height = heightDst; dst.log_height = heightDst;
dst.layout = GetLayout( dst_dev->hdc ); dst.layout = GetLayout( hdcDst );
ret = !get_vis_rectangles( dcDst, &dst, dcSrc, &src ); ret = !get_vis_rectangles( dcDst, &dst, dcSrc, &src );
TRACE("src %p log=%d,%d %dx%d phys=%d,%d %dx%d vis=%s dst %p log=%d,%d %dx%d phys=%d,%d %dx%d vis=%s blend=%02x/%02x/%02x/%02x\n", TRACE("src %p log=%d,%d %dx%d phys=%d,%d %dx%d vis=%s dst %p log=%d,%d %dx%d phys=%d,%d %dx%d vis=%s blend=%02x/%02x/%02x/%02x\n",
...@@ -962,8 +965,12 @@ BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heig ...@@ -962,8 +965,12 @@ BOOL WINAPI GdiAlphaBlend(HDC hdcDst, int xDst, int yDst, int widthDst, int heig
SetLastError( ERROR_INVALID_PARAMETER ); SetLastError( ERROR_INVALID_PARAMETER );
ret = FALSE; ret = FALSE;
} }
else if (!ret) ret = dst_dev->funcs->pAlphaBlend( dst_dev, &dst, src_dev, &src, blendFunction ); else if (!ret)
{
PHYSDEV src_dev = GET_DC_PHYSDEV( dcSrc, pAlphaBlend );
PHYSDEV dst_dev = GET_DC_PHYSDEV( dcDst, pAlphaBlend );
ret = dst_dev->funcs->pAlphaBlend( dst_dev, &dst, src_dev, &src, blendFunction );
}
release_dc_ptr( dcDst ); release_dc_ptr( dcDst );
} }
release_dc_ptr( dcSrc ); release_dc_ptr( dcSrc );
......
...@@ -250,18 +250,17 @@ INT WINAPI SelectClipRgn( HDC hdc, HRGN hrgn ) ...@@ -250,18 +250,17 @@ INT WINAPI SelectClipRgn( HDC hdc, HRGN hrgn )
*/ */
INT WINAPI ExtSelectClipRgn( HDC hdc, HRGN hrgn, INT fnMode ) INT WINAPI ExtSelectClipRgn( HDC hdc, HRGN hrgn, INT fnMode )
{ {
INT retval = ERROR; PHYSDEV physdev;
INT retval;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
TRACE("%p %p %d\n", hdc, hrgn, fnMode ); TRACE("%p %p %d\n", hdc, hrgn, fnMode );
if (dc) if (!dc) return ERROR;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pExtSelectClipRgn );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pExtSelectClipRgn );
retval = physdev->funcs->pExtSelectClipRgn( physdev, hrgn, fnMode ); retval = physdev->funcs->pExtSelectClipRgn( physdev, hrgn, fnMode );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return retval; return retval;
} }
...@@ -298,18 +297,17 @@ void CDECL __wine_set_visible_region( HDC hdc, HRGN hrgn, const RECT *vis_rect, ...@@ -298,18 +297,17 @@ void CDECL __wine_set_visible_region( HDC hdc, HRGN hrgn, const RECT *vis_rect,
*/ */
INT WINAPI OffsetClipRgn( HDC hdc, INT x, INT y ) INT WINAPI OffsetClipRgn( HDC hdc, INT x, INT y )
{ {
INT ret = ERROR; PHYSDEV physdev;
INT ret;
DC *dc = get_dc_ptr( hdc ); DC *dc = get_dc_ptr( hdc );
TRACE("%p %d,%d\n", hdc, x, y ); TRACE("%p %d,%d\n", hdc, x, y );
if (dc) if (!dc) return ERROR;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pOffsetClipRgn );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pOffsetClipRgn );
ret = physdev->funcs->pOffsetClipRgn( physdev, x, y ); ret = physdev->funcs->pOffsetClipRgn( physdev, x, y );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -320,18 +318,17 @@ INT WINAPI OffsetClipRgn( HDC hdc, INT x, INT y ) ...@@ -320,18 +318,17 @@ INT WINAPI OffsetClipRgn( HDC hdc, INT x, INT y )
INT WINAPI ExcludeClipRect( HDC hdc, INT left, INT top, INT WINAPI ExcludeClipRect( HDC hdc, INT left, INT top,
INT right, INT bottom ) INT right, INT bottom )
{ {
INT ret = ERROR; PHYSDEV physdev;
INT ret;
DC *dc = get_dc_ptr( hdc ); DC *dc = get_dc_ptr( hdc );
TRACE("%p %d,%d-%d,%d\n", hdc, left, top, right, bottom ); TRACE("%p %d,%d-%d,%d\n", hdc, left, top, right, bottom );
if (dc) if (!dc) return ERROR;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pExcludeClipRect );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pExcludeClipRect );
ret = physdev->funcs->pExcludeClipRect( physdev, left, top, right, bottom ); ret = physdev->funcs->pExcludeClipRect( physdev, left, top, right, bottom );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -341,18 +338,17 @@ INT WINAPI ExcludeClipRect( HDC hdc, INT left, INT top, ...@@ -341,18 +338,17 @@ INT WINAPI ExcludeClipRect( HDC hdc, INT left, INT top,
*/ */
INT WINAPI IntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bottom ) INT WINAPI IntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bottom )
{ {
INT ret = ERROR; PHYSDEV physdev;
INT ret;
DC *dc = get_dc_ptr( hdc ); DC *dc = get_dc_ptr( hdc );
TRACE("%p %d,%d - %d,%d\n", hdc, left, top, right, bottom ); TRACE("%p %d,%d - %d,%d\n", hdc, left, top, right, bottom );
if (dc) if (!dc) return ERROR;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pIntersectClipRect );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pIntersectClipRect );
ret = physdev->funcs->pIntersectClipRect( physdev, left, top, right, bottom ); ret = physdev->funcs->pIntersectClipRect( physdev, left, top, right, bottom );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
......
...@@ -537,14 +537,15 @@ INT WINAPI SaveDC( HDC hdc ) ...@@ -537,14 +537,15 @@ INT WINAPI SaveDC( HDC hdc )
*/ */
BOOL WINAPI RestoreDC( HDC hdc, INT level ) BOOL WINAPI RestoreDC( HDC hdc, INT level )
{ {
PHYSDEV physdev;
DC *dc; DC *dc;
BOOL success = FALSE; BOOL success = FALSE;
TRACE("%p %d\n", hdc, level ); TRACE("%p %d\n", hdc, level );
if ((dc = get_dc_ptr( hdc ))) if ((dc = get_dc_ptr( hdc )))
{ {
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pRestoreDC );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pRestoreDC );
success = physdev->funcs->pRestoreDC( physdev, level ); success = physdev->funcs->pRestoreDC( physdev, level );
release_dc_ptr( dc ); release_dc_ptr( dc );
} }
......
...@@ -603,6 +603,7 @@ INT WINAPI StretchDIBits(HDC hdc, INT xDst, INT yDst, INT widthDst, INT heightDs ...@@ -603,6 +603,7 @@ INT WINAPI StretchDIBits(HDC hdc, INT xDst, INT yDst, INT widthDst, INT heightDs
{ {
char buffer[FIELD_OFFSET( BITMAPINFO, bmiColors[256] )]; char buffer[FIELD_OFFSET( BITMAPINFO, bmiColors[256] )];
BITMAPINFO *info = (BITMAPINFO *)buffer; BITMAPINFO *info = (BITMAPINFO *)buffer;
PHYSDEV physdev;
DC *dc; DC *dc;
INT ret = 0; INT ret = 0;
...@@ -615,8 +616,8 @@ INT WINAPI StretchDIBits(HDC hdc, INT xDst, INT yDst, INT widthDst, INT heightDs ...@@ -615,8 +616,8 @@ INT WINAPI StretchDIBits(HDC hdc, INT xDst, INT yDst, INT widthDst, INT heightDs
if ((dc = get_dc_ptr( hdc ))) if ((dc = get_dc_ptr( hdc )))
{ {
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pStretchDIBits );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pStretchDIBits );
ret = physdev->funcs->pStretchDIBits( physdev, xDst, yDst, widthDst, heightDst, ret = physdev->funcs->pStretchDIBits( physdev, xDst, yDst, widthDst, heightDst,
xSrc, ySrc, widthSrc, heightSrc, bits, info, coloruse, rop ); xSrc, ySrc, widthSrc, heightSrc, bits, info, coloruse, rop );
release_dc_ptr( dc ); release_dc_ptr( dc );
...@@ -875,6 +876,7 @@ INT WINAPI SetDIBitsToDevice(HDC hdc, INT xDest, INT yDest, DWORD cx, ...@@ -875,6 +876,7 @@ INT WINAPI SetDIBitsToDevice(HDC hdc, INT xDest, INT yDest, DWORD cx,
{ {
char buffer[FIELD_OFFSET( BITMAPINFO, bmiColors[256] )]; char buffer[FIELD_OFFSET( BITMAPINFO, bmiColors[256] )];
BITMAPINFO *info = (BITMAPINFO *)buffer; BITMAPINFO *info = (BITMAPINFO *)buffer;
PHYSDEV physdev;
INT ret = 0; INT ret = 0;
DC *dc; DC *dc;
...@@ -887,8 +889,8 @@ INT WINAPI SetDIBitsToDevice(HDC hdc, INT xDest, INT yDest, DWORD cx, ...@@ -887,8 +889,8 @@ INT WINAPI SetDIBitsToDevice(HDC hdc, INT xDest, INT yDest, DWORD cx,
if ((dc = get_dc_ptr( hdc ))) if ((dc = get_dc_ptr( hdc )))
{ {
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetDIBitsToDevice );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pSetDIBitsToDevice );
ret = physdev->funcs->pSetDIBitsToDevice( physdev, xDest, yDest, cx, cy, xSrc, ret = physdev->funcs->pSetDIBitsToDevice( physdev, xDest, yDest, cx, cy, xSrc,
ySrc, startscan, lines, bits, info, coloruse ); ySrc, startscan, lines, bits, info, coloruse );
release_dc_ptr( dc ); release_dc_ptr( dc );
......
...@@ -1121,16 +1121,15 @@ INT WINAPI Escape( HDC hdc, INT escape, INT in_count, LPCSTR in_data, LPVOID out ...@@ -1121,16 +1121,15 @@ INT WINAPI Escape( HDC hdc, INT escape, INT in_count, LPCSTR in_data, LPVOID out
INT WINAPI ExtEscape( HDC hdc, INT nEscape, INT cbInput, LPCSTR lpszInData, INT WINAPI ExtEscape( HDC hdc, INT nEscape, INT cbInput, LPCSTR lpszInData,
INT cbOutput, LPSTR lpszOutData ) INT cbOutput, LPSTR lpszOutData )
{ {
INT ret = 0; PHYSDEV physdev;
INT ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return 0;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pExtEscape );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pExtEscape );
ret = physdev->funcs->pExtEscape( physdev, nEscape, cbInput, lpszInData, cbOutput, lpszOutData ); ret = physdev->funcs->pExtEscape( physdev, nEscape, cbInput, lpszInData, cbOutput, lpszOutData );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
......
...@@ -282,16 +282,15 @@ BOOL WINAPI Arc( HDC hdc, INT left, INT top, INT right, ...@@ -282,16 +282,15 @@ BOOL WINAPI Arc( HDC hdc, INT left, INT top, INT right,
INT bottom, INT xstart, INT ystart, INT bottom, INT xstart, INT ystart,
INT xend, INT yend ) INT xend, INT yend )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pArc );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pArc );
ret = physdev->funcs->pArc( physdev, left, top, right, bottom, xstart, ystart, xend, yend ); ret = physdev->funcs->pArc( physdev, left, top, right, bottom, xstart, ystart, xend, yend );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -396,16 +395,15 @@ BOOL WINAPI Ellipse( HDC hdc, INT left, INT top, ...@@ -396,16 +395,15 @@ BOOL WINAPI Ellipse( HDC hdc, INT left, INT top,
BOOL WINAPI Rectangle( HDC hdc, INT left, INT top, BOOL WINAPI Rectangle( HDC hdc, INT left, INT top,
INT right, INT bottom ) INT right, INT bottom )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pRectangle );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pRectangle );
ret = physdev->funcs->pRectangle( physdev, left, top, right, bottom ); ret = physdev->funcs->pRectangle( physdev, left, top, right, bottom );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -416,16 +414,15 @@ BOOL WINAPI Rectangle( HDC hdc, INT left, INT top, ...@@ -416,16 +414,15 @@ BOOL WINAPI Rectangle( HDC hdc, INT left, INT top,
BOOL WINAPI RoundRect( HDC hdc, INT left, INT top, INT right, BOOL WINAPI RoundRect( HDC hdc, INT left, INT top, INT right,
INT bottom, INT ell_width, INT ell_height ) INT bottom, INT ell_width, INT ell_height )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC *dc = get_dc_ptr( hdc ); DC *dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pRoundRect );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pRoundRect );
ret = physdev->funcs->pRoundRect( physdev, left, top, right, bottom, ell_width, ell_height ); ret = physdev->funcs->pRoundRect( physdev, left, top, right, bottom, ell_width, ell_height );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -434,16 +431,15 @@ BOOL WINAPI RoundRect( HDC hdc, INT left, INT top, INT right, ...@@ -434,16 +431,15 @@ BOOL WINAPI RoundRect( HDC hdc, INT left, INT top, INT right,
*/ */
COLORREF WINAPI SetPixel( HDC hdc, INT x, INT y, COLORREF color ) COLORREF WINAPI SetPixel( HDC hdc, INT x, INT y, COLORREF color )
{ {
COLORREF ret = 0; PHYSDEV physdev;
COLORREF ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return 0;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetPixel );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pSetPixel );
ret = physdev->funcs->pSetPixel( physdev, x, y, color ); ret = physdev->funcs->pSetPixel( physdev, x, y, color );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -452,18 +448,15 @@ COLORREF WINAPI SetPixel( HDC hdc, INT x, INT y, COLORREF color ) ...@@ -452,18 +448,15 @@ COLORREF WINAPI SetPixel( HDC hdc, INT x, INT y, COLORREF color )
*/ */
BOOL WINAPI SetPixelV( HDC hdc, INT x, INT y, COLORREF color ) BOOL WINAPI SetPixelV( HDC hdc, INT x, INT y, COLORREF color )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetPixel );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pSetPixel );
physdev->funcs->pSetPixel( physdev, x, y, color ); physdev->funcs->pSetPixel( physdev, x, y, color );
ret = TRUE;
release_dc_ptr( dc ); release_dc_ptr( dc );
} return TRUE;
return ret;
} }
/*********************************************************************** /***********************************************************************
...@@ -471,16 +464,15 @@ BOOL WINAPI SetPixelV( HDC hdc, INT x, INT y, COLORREF color ) ...@@ -471,16 +464,15 @@ BOOL WINAPI SetPixelV( HDC hdc, INT x, INT y, COLORREF color )
*/ */
COLORREF WINAPI GetPixel( HDC hdc, INT x, INT y ) COLORREF WINAPI GetPixel( HDC hdc, INT x, INT y )
{ {
COLORREF ret = CLR_INVALID; PHYSDEV physdev;
COLORREF ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return CLR_INVALID;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pGetPixel );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pGetPixel );
ret = physdev->funcs->pGetPixel( physdev, x, y ); ret = physdev->funcs->pGetPixel( physdev, x, y );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -535,16 +527,15 @@ BOOL WINAPI GdiSwapBuffers( HDC hdc ) ...@@ -535,16 +527,15 @@ BOOL WINAPI GdiSwapBuffers( HDC hdc )
*/ */
BOOL WINAPI PaintRgn( HDC hdc, HRGN hrgn ) BOOL WINAPI PaintRgn( HDC hdc, HRGN hrgn )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pPaintRgn );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pPaintRgn );
ret = physdev->funcs->pPaintRgn( physdev, hrgn ); ret = physdev->funcs->pPaintRgn( physdev, hrgn );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -554,16 +545,15 @@ BOOL WINAPI PaintRgn( HDC hdc, HRGN hrgn ) ...@@ -554,16 +545,15 @@ BOOL WINAPI PaintRgn( HDC hdc, HRGN hrgn )
*/ */
BOOL WINAPI FillRgn( HDC hdc, HRGN hrgn, HBRUSH hbrush ) BOOL WINAPI FillRgn( HDC hdc, HRGN hrgn, HBRUSH hbrush )
{ {
BOOL retval = FALSE; PHYSDEV physdev;
BOOL retval;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pFillRgn );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pFillRgn );
retval = physdev->funcs->pFillRgn( physdev, hrgn, hbrush ); retval = physdev->funcs->pFillRgn( physdev, hrgn, hbrush );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return retval; return retval;
} }
...@@ -574,16 +564,15 @@ BOOL WINAPI FillRgn( HDC hdc, HRGN hrgn, HBRUSH hbrush ) ...@@ -574,16 +564,15 @@ BOOL WINAPI FillRgn( HDC hdc, HRGN hrgn, HBRUSH hbrush )
BOOL WINAPI FrameRgn( HDC hdc, HRGN hrgn, HBRUSH hbrush, BOOL WINAPI FrameRgn( HDC hdc, HRGN hrgn, HBRUSH hbrush,
INT nWidth, INT nHeight ) INT nWidth, INT nHeight )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC *dc = get_dc_ptr( hdc ); DC *dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pFrameRgn );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pFrameRgn );
ret = physdev->funcs->pFrameRgn( physdev, hrgn, hbrush, nWidth, nHeight ); ret = physdev->funcs->pFrameRgn( physdev, hrgn, hbrush, nWidth, nHeight );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -593,16 +582,15 @@ BOOL WINAPI FrameRgn( HDC hdc, HRGN hrgn, HBRUSH hbrush, ...@@ -593,16 +582,15 @@ BOOL WINAPI FrameRgn( HDC hdc, HRGN hrgn, HBRUSH hbrush,
*/ */
BOOL WINAPI InvertRgn( HDC hdc, HRGN hrgn ) BOOL WINAPI InvertRgn( HDC hdc, HRGN hrgn )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC *dc = get_dc_ptr( hdc ); DC *dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pInvertRgn );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pInvertRgn );
ret = physdev->funcs->pInvertRgn( physdev, hrgn ); ret = physdev->funcs->pInvertRgn( physdev, hrgn );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -612,16 +600,15 @@ BOOL WINAPI InvertRgn( HDC hdc, HRGN hrgn ) ...@@ -612,16 +600,15 @@ BOOL WINAPI InvertRgn( HDC hdc, HRGN hrgn )
*/ */
BOOL WINAPI Polyline( HDC hdc, const POINT* pt, INT count ) BOOL WINAPI Polyline( HDC hdc, const POINT* pt, INT count )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pPolyline );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pPolyline );
ret = physdev->funcs->pPolyline( physdev, pt, count ); ret = physdev->funcs->pPolyline( physdev, pt, count );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -655,16 +642,15 @@ BOOL WINAPI PolylineTo( HDC hdc, const POINT* pt, DWORD cCount ) ...@@ -655,16 +642,15 @@ BOOL WINAPI PolylineTo( HDC hdc, const POINT* pt, DWORD cCount )
*/ */
BOOL WINAPI Polygon( HDC hdc, const POINT* pt, INT count ) BOOL WINAPI Polygon( HDC hdc, const POINT* pt, INT count )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pPolygon );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pPolygon );
ret = physdev->funcs->pPolygon( physdev, pt, count ); ret = physdev->funcs->pPolygon( physdev, pt, count );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -675,16 +661,15 @@ BOOL WINAPI Polygon( HDC hdc, const POINT* pt, INT count ) ...@@ -675,16 +661,15 @@ BOOL WINAPI Polygon( HDC hdc, const POINT* pt, INT count )
BOOL WINAPI PolyPolygon( HDC hdc, const POINT* pt, const INT* counts, BOOL WINAPI PolyPolygon( HDC hdc, const POINT* pt, const INT* counts,
UINT polygons ) UINT polygons )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pPolyPolygon );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pPolyPolygon );
ret = physdev->funcs->pPolyPolygon( physdev, pt, counts, polygons ); ret = physdev->funcs->pPolyPolygon( physdev, pt, counts, polygons );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -694,16 +679,15 @@ BOOL WINAPI PolyPolygon( HDC hdc, const POINT* pt, const INT* counts, ...@@ -694,16 +679,15 @@ BOOL WINAPI PolyPolygon( HDC hdc, const POINT* pt, const INT* counts,
BOOL WINAPI PolyPolyline( HDC hdc, const POINT* pt, const DWORD* counts, BOOL WINAPI PolyPolyline( HDC hdc, const POINT* pt, const DWORD* counts,
DWORD polylines ) DWORD polylines )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pPolyPolyline );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pPolyPolyline );
ret = physdev->funcs->pPolyPolyline( physdev, pt, counts, polylines ); ret = physdev->funcs->pPolyPolyline( physdev, pt, counts, polylines );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
...@@ -713,17 +697,15 @@ BOOL WINAPI PolyPolyline( HDC hdc, const POINT* pt, const DWORD* counts, ...@@ -713,17 +697,15 @@ BOOL WINAPI PolyPolyline( HDC hdc, const POINT* pt, const DWORD* counts,
BOOL WINAPI ExtFloodFill( HDC hdc, INT x, INT y, COLORREF color, BOOL WINAPI ExtFloodFill( HDC hdc, INT x, INT y, COLORREF color,
UINT fillType ) UINT fillType )
{ {
BOOL ret = FALSE; PHYSDEV physdev;
BOOL ret;
DC * dc = get_dc_ptr( hdc ); DC * dc = get_dc_ptr( hdc );
if (dc) if (!dc) return FALSE;
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pExtFloodFill );
update_dc( dc ); update_dc( dc );
physdev = GET_DC_PHYSDEV( dc, pExtFloodFill );
ret = physdev->funcs->pExtFloodFill( physdev, x, y, color, fillType ); ret = physdev->funcs->pExtFloodFill( physdev, x, y, color, fillType );
release_dc_ptr( dc ); release_dc_ptr( dc );
}
return ret; return ret;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment