diff --git a/reactos/subsystems/win32/win32k/eng/lineto.c b/reactos/subsystems/win32/win32k/eng/lineto.c index 94ec63dbe70..33e05d8aa8a 100644 --- a/reactos/subsystems/win32/win32k/eng/lineto.c +++ b/reactos/subsystems/win32/win32k/eng/lineto.c @@ -348,6 +348,7 @@ EngLineTo(SURFOBJ *DestObj, INTENG_ENTER_LEAVE EnterLeave; RECT_ENUM RectEnum; BOOL EnumMore; + CLIPOBJ *pcoPriv = NULL; if (x1 < x2) { @@ -375,6 +376,15 @@ EngLineTo(SURFOBJ *DestObj, return FALSE; } + if (!Clip) + { + Clip = pcoPriv = IntEngCreateClipRegion(0, 0, RectBounds); + if (!Clip) + { + return FALSE; + } + } + x1 += Translate.x; x2 += Translate.x; y1 += Translate.y; @@ -487,6 +497,11 @@ EngLineTo(SURFOBJ *DestObj, } } + if (pcoPriv) + { + IntEngDeleteClipRegion(pcoPriv); + } + return IntEngLeave(&EnterLeave); }