Rootless: Remove the PaintWindow optimization which snuck back in.
This commit is contained in:
parent
a751bc12be
commit
2082e7aa87
|
@ -1485,95 +1485,6 @@ RootlessFlushWindowColormap (WindowPtr pWin)
|
|||
configure_window (winRec->wid, XP_COLORMAP, &wc);
|
||||
}
|
||||
|
||||
/*
|
||||
* SetPixmapOfAncestors
|
||||
* Set the Pixmaps on all ParentRelative windows up the ancestor chain.
|
||||
*/
|
||||
static void
|
||||
SetPixmapOfAncestors(WindowPtr pWin)
|
||||
{
|
||||
ScreenPtr pScreen = pWin->drawable.pScreen;
|
||||
WindowPtr topWin = TopLevelParent(pWin);
|
||||
RootlessWindowRec *topWinRec = WINREC(topWin);
|
||||
|
||||
while (pWin->backgroundState == ParentRelative) {
|
||||
if (pWin == topWin) {
|
||||
// disallow ParentRelative background state on top level
|
||||
XID pixel = 0;
|
||||
ChangeWindowAttributes(pWin, CWBackPixel, &pixel, serverClient);
|
||||
RL_DEBUG_MSG("Cleared ParentRelative on 0x%x.\n", pWin);
|
||||
break;
|
||||
}
|
||||
|
||||
pWin = pWin->parent;
|
||||
pScreen->SetWindowPixmap(pWin, topWinRec->pixmap);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* RootlessPaintWindowBackground
|
||||
*/
|
||||
void
|
||||
RootlessPaintWindowBackground(WindowPtr pWin, RegionPtr pRegion, int what)
|
||||
{
|
||||
ScreenPtr pScreen = pWin->drawable.pScreen;
|
||||
|
||||
if (IsRoot(pWin))
|
||||
return;
|
||||
|
||||
RL_DEBUG_MSG("paintwindowbackground start (win 0x%x, framed %i) ",
|
||||
pWin, IsFramedWindow(pWin));
|
||||
|
||||
if (IsFramedWindow(pWin)) {
|
||||
RootlessStartDrawing(pWin);
|
||||
RootlessDamageRegion(pWin, pRegion);
|
||||
|
||||
// For ParentRelative windows, we have to make sure the window
|
||||
// pixmap is set correctly all the way up the ancestor chain.
|
||||
if (pWin->backgroundState == ParentRelative) {
|
||||
SetPixmapOfAncestors(pWin);
|
||||
}
|
||||
}
|
||||
|
||||
SCREEN_UNWRAP(pScreen, PaintWindowBackground);
|
||||
pScreen->PaintWindowBackground(pWin, pRegion, what);
|
||||
SCREEN_WRAP(pScreen, PaintWindowBackground);
|
||||
|
||||
RL_DEBUG_MSG("paintwindowbackground end\n");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* RootlessPaintWindowBorder
|
||||
*/
|
||||
void
|
||||
RootlessPaintWindowBorder(WindowPtr pWin, RegionPtr pRegion, int what)
|
||||
{
|
||||
RL_DEBUG_MSG("paintwindowborder start (win 0x%x) ", pWin);
|
||||
|
||||
if (IsFramedWindow(pWin)) {
|
||||
RootlessStartDrawing(pWin);
|
||||
RootlessDamageRegion(pWin, pRegion);
|
||||
|
||||
// For ParentRelative windows with tiled borders, we have to make
|
||||
// sure the window pixmap is set correctly all the way up the
|
||||
// ancestor chain.
|
||||
if (!pWin->borderIsPixel &&
|
||||
pWin->backgroundState == ParentRelative)
|
||||
{
|
||||
SetPixmapOfAncestors(pWin);
|
||||
}
|
||||
}
|
||||
|
||||
SCREEN_UNWRAP(pWin->drawable.pScreen, PaintWindowBorder);
|
||||
pWin->drawable.pScreen->PaintWindowBorder(pWin, pRegion, what);
|
||||
SCREEN_WRAP(pWin->drawable.pScreen, PaintWindowBorder);
|
||||
|
||||
RL_DEBUG_MSG("paintwindowborder end\n");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* RootlessChangeBorderWidth
|
||||
* FIXME: untested!
|
||||
|
|
Loading…
Reference in New Issue
Block a user