composite: Skip copying parent pixmap contents when possible

If the parent window has a different depth (which means pWin can't have
valid contents yet) and pWin has effective background other than None.
This commit is contained in:
Michel Dänzer 2025-10-30 16:45:23 +01:00 committed by Michel Dänzer
parent 9cf1dc899b
commit 83ee720817

View file

@ -526,6 +526,15 @@ compUnredirectOneSubwindow(WindowPtr pParent, WindowPtr pWin)
return Success;
}
static unsigned
compGetBackgroundState(WindowPtr pWin)
{
while (pWin->backgroundState == ParentRelative)
pWin = pWin->parent;
return pWin->backgroundState;
}
static PixmapPtr
compNewPixmap(WindowPtr pWin, int x, int y, int w, int h)
{
@ -560,7 +569,7 @@ compNewPixmap(WindowPtr pWin, int x, int y, int w, int h)
FreeScratchGC(pGC);
}
}
else {
else if (compGetBackgroundState(pWin) == None) {
PictFormatPtr pSrcFormat = PictureWindowFormat(pParent);
PictFormatPtr pDstFormat = PictureWindowFormat(pWin);
XID inferiors = IncludeInferiors;