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-12-12 02:55:02 +02:00
committed by Enrico Weigelt
parent 2bcaa973be
commit 81cd4fa767

View File

@@ -524,6 +524,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)
{
@@ -565,7 +574,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;