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.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2092>
This commit is contained in:
Michel Dänzer 2025-10-30 16:45:23 +01:00 committed by Alan Coopersmith
parent d4be568863
commit 39897b3b71

View file

@ -528,6 +528,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)
{
@ -562,7 +571,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;