diff --git a/composite/compalloc.c b/composite/compalloc.c index e6a203f6b..05ffc7e85 100644 --- a/composite/compalloc.c +++ b/composite/compalloc.c @@ -612,7 +612,7 @@ compAllocPixmap(WindowPtr pWin) else pWin->redirectDraw = RedirectDrawManual; - compSetPixmap(pWin, pPixmap); + compSetPixmap(pWin, pPixmap, bw); cw->oldx = COMP_ORIGIN_INVALID; cw->oldy = COMP_ORIGIN_INVALID; cw->damageRegistered = FALSE; @@ -651,7 +651,7 @@ compSetParentPixmap(WindowPtr pWin) RegionCopy(&pWin->borderClip, &cw->borderClip); pParentPixmap = (*pScreen->GetWindowPixmap) (pWin->parent); pWin->redirectDraw = RedirectDrawNone; - compSetPixmap(pWin, pParentPixmap); + compSetPixmap(pWin, pParentPixmap, pWin->borderWidth); } /* @@ -682,7 +682,7 @@ compReallocPixmap(WindowPtr pWin, int draw_x, int draw_y, if (!pNew) return FALSE; cw->pOldPixmap = pOld; - compSetPixmap(pWin, pNew); + compSetPixmap(pWin, pNew, bw); } else { pNew = pOld; diff --git a/composite/compint.h b/composite/compint.h index 09241f2a2..f05c2d8a5 100644 --- a/composite/compint.h +++ b/composite/compint.h @@ -274,7 +274,7 @@ void #endif void - compSetPixmap(WindowPtr pWin, PixmapPtr pPixmap); + compSetPixmap(WindowPtr pWin, PixmapPtr pPixmap, int bw); Bool compCheckRedirect(WindowPtr pWin); diff --git a/composite/compwindow.c b/composite/compwindow.c index 344138ad7..bcd230c37 100644 --- a/composite/compwindow.c +++ b/composite/compwindow.c @@ -89,6 +89,7 @@ compCheckTree(ScreenPtr pScreen) typedef struct _compPixmapVisit { WindowPtr pWindow; PixmapPtr pPixmap; + int bw; } CompPixmapVisitRec, *CompPixmapVisitPtr; static Bool @@ -126,19 +127,20 @@ compSetPixmapVisitWindow(WindowPtr pWindow, void *data) */ SetWinSize(pWindow); SetBorderSize(pWindow); - if (HasBorder(pWindow)) + if (pVisit->bw) QueueWorkProc(compRepaintBorder, serverClient, (void *) (intptr_t) pWindow->drawable.id); return WT_WALKCHILDREN; } void -compSetPixmap(WindowPtr pWindow, PixmapPtr pPixmap) +compSetPixmap(WindowPtr pWindow, PixmapPtr pPixmap, int bw) { CompPixmapVisitRec visitRec; visitRec.pWindow = pWindow; visitRec.pPixmap = pPixmap; + visitRec.bw = bw; TraverseTree(pWindow, compSetPixmapVisitWindow, (void *) &visitRec); compCheckTree(pWindow->drawable.pScreen); } @@ -463,7 +465,8 @@ compReparentWindow(WindowPtr pWin, WindowPtr pPriorParent) * Reset pixmap pointers as appropriate */ if (pWin->parent && pWin->redirectDraw == RedirectDrawNone) - compSetPixmap(pWin, (*pScreen->GetWindowPixmap) (pWin->parent)); + compSetPixmap(pWin, (*pScreen->GetWindowPixmap) (pWin->parent), + pWin->borderWidth); /* * Call down to next function */