diff --git a/libfreerdp-gdi/gdi.c b/libfreerdp-gdi/gdi.c index 3f6301b3a..6f72f70a1 100644 --- a/libfreerdp-gdi/gdi.c +++ b/libfreerdp-gdi/gdi.c @@ -590,19 +590,25 @@ void gdi_polyline(rdpContext* context, POLYLINE_ORDER* polyline) HGDI_PEN hPen; DELTA_POINT* points; rdpGdi* gdi = context->gdi; + sint32 x; + sint32 y; color = freerdp_color_convert(polyline->penColor, gdi->srcBpp, 32, gdi->clrconv); - hPen = gdi_CreatePen(0, 1, (GDI_COLOR) color); + hPen = gdi_CreatePen(GDI_PS_SOLID, 1, (GDI_COLOR) color); gdi_SelectObject(gdi->drawing->hdc, (HGDIOBJECT) hPen); gdi_SetROP2(gdi->drawing->hdc, polyline->bRop2); - gdi_MoveToEx(gdi->drawing->hdc, polyline->xStart, polyline->yStart, NULL); + x = polyline->xStart; + y = polyline->yStart; + gdi_MoveToEx(gdi->drawing->hdc, x, y, NULL); points = polyline->points; for (i = 0; i < polyline->numPoints; i++) { - gdi_LineTo(gdi->drawing->hdc, points[i].x, points[i].y); - gdi_MoveToEx(gdi->drawing->hdc, points[i].x, points[i].y, NULL); + x += points[i].x; + y += points[i].y; + gdi_LineTo(gdi->drawing->hdc, x, y); + gdi_MoveToEx(gdi->drawing->hdc, x, y, NULL); } gdi_DeleteObject((HGDIOBJECT) hPen); @@ -763,7 +769,7 @@ void gdi_register_update_callbacks(rdpUpdate* update) primary->MultiOpaqueRect = gdi_multi_opaque_rect; primary->MultiDrawNineGrid = NULL; primary->LineTo = gdi_line_to; - primary->Polyline = NULL; + primary->Polyline = gdi_polyline; primary->MemBlt = gdi_memblt; primary->Mem3Blt = gdi_mem3blt; primary->SaveBitmap = NULL;