Author: jimtabor Date: Thu Dec 10 02:18:26 2009 New Revision: 44507
URL: http://svn.reactos.org/svn/reactos?rev=44507&view=rev Log: [Win32k] - Add a bypass flag to skip the Path support in IntGdiMoveToEx. See bug report 4364. This fixes 11 gdi path wine tests.
Modified: trunk/reactos/subsystems/win32/win32k/include/intgdi.h trunk/reactos/subsystems/win32/win32k/objects/arc.c trunk/reactos/subsystems/win32/win32k/objects/line.c trunk/reactos/subsystems/win32/win32k/objects/path.c
Modified: trunk/reactos/subsystems/win32/win32k/include/intgdi.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/inc... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/intgdi.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/include/intgdi.h [iso-8859-1] Thu Dec 10 02:18:26 2009 @@ -67,7 +67,8 @@ IntGdiMoveToEx(DC *dc, int X, int Y, - LPPOINT Point); + LPPOINT Point, + BOOL BypassPath);
BOOL FASTCALL IntGdiPolyBezier(DC *dc,
Modified: trunk/reactos/subsystems/win32/win32k/objects/arc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/obj... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/arc.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/arc.c [iso-8859-1] Thu Dec 10 02:18:26 2009 @@ -247,9 +247,9 @@ if (arctype == GdiTypeArcTo) { if (dc->dclevel.flPath & DCPATH_CLOCKWISE) - IntGdiMoveToEx(dc, XStartArc, YStartArc, NULL); + IntGdiMoveToEx(dc, XStartArc, YStartArc, NULL, TRUE); else - IntGdiMoveToEx(dc, XEndArc, YEndArc, NULL); + IntGdiMoveToEx(dc, XEndArc, YEndArc, NULL, TRUE); } return Ret; } @@ -294,7 +294,7 @@
if (result) { - IntGdiMoveToEx(pDC, x2, y2, NULL); // Dont forget Path. + IntGdiMoveToEx(pDC, x2, y2, NULL, TRUE); } return result; }
Modified: trunk/reactos/subsystems/win32/win32k/objects/line.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/obj... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/line.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/line.c [iso-8859-1] Thu Dec 10 02:18:26 2009 @@ -30,7 +30,8 @@ IntGdiMoveToEx(DC *dc, int X, int Y, - LPPOINT Point) + LPPOINT Point, + BOOL BypassPath) { BOOL PathIsOpen; PDC_ATTR pdcattr = dc->pdcattr; @@ -53,6 +54,8 @@ pdcattr->ptfxCurrent = pdcattr->ptlCurrent; CoordLPtoDP(dc, &pdcattr->ptfxCurrent); // Update fx pdcattr->ulDirty_ &= ~(DIRTY_PTLCURRENT|DIRTY_PTFXCURRENT|DIRTY_STYLESTATE); + + if (BypassPath) return TRUE;
PathIsOpen = PATH_IsPathOpen(dc->dclevel);
@@ -437,7 +440,7 @@ { if ( lpbTypes[i] == PT_MOVETO ) { - IntGdiMoveToEx( dc, lppt[i].x, lppt[i].y, NULL ); + IntGdiMoveToEx( dc, lppt[i].x, lppt[i].y, NULL, FALSE ); lastmove.x = pdcattr->ptlCurrent.x; lastmove.y = pdcattr->ptlCurrent.y; }
Modified: trunk/reactos/subsystems/win32/win32k/objects/path.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/obj... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/path.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/path.c [iso-8859-1] Thu Dec 10 02:18:26 2009 @@ -1491,7 +1491,7 @@ POINT pt; IntGetCurrentPositionEx(dc, &pt); IntDPtoLP(dc, &pt, 1); - IntGdiMoveToEx(dc, pt.x, pt.y, NULL); + IntGdiMoveToEx(dc, pt.x, pt.y, NULL, FALSE); } DPRINT("Leave %s, ret=%d\n", __FUNCTION__, ret); return ret;