commit 2df13e4fa12132d0ad8dcf614e0fa45357177f29 Author: Alexander Almaleh Date: Sun Jul 27 22:51:43 2014 +0300 Fix for issue 17982. diff --git a/dlls/gdi32/bitblt.c b/dlls/gdi32/bitblt.c index 762ca0f..5c81ad2 100644 --- a/dlls/gdi32/bitblt.c +++ b/dlls/gdi32/bitblt.c @@ -518,6 +518,21 @@ COLORREF nulldrv_GetPixel( PHYSDEV dev, INT x, INT y ) */ BOOL WINAPI PatBlt( HDC hdc, INT left, INT top, INT width, INT height, DWORD rop) { + // Fix for issue 17982. + // For PAT_COPY, we delegate the blitting operation to Polygon(), + // because it can handle rotation in the XFORM matrix. + if (rop == PATCOPY) + { + POINT p[4] = { left,top, left+width,top, left+width,top+height, + left,top+height }; + // Polygon() uses the pen, but PatBlt() does not, so we select + // a NULL_PEN for the operation. + HGDIOBJ old = SelectObject(hdc, GetStockObject(NULL_PEN)); + BOOL ret = Polygon(hdc, p, 4); + SelectObject(hdc, old); + return ret; + } + DC * dc; BOOL ret = FALSE;