diff options
Diffstat (limited to 'x11-base/xorg-server/files/use-composite-for-unequal-depths.patch')
-rw-r--r-- | x11-base/xorg-server/files/use-composite-for-unequal-depths.patch | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/x11-base/xorg-server/files/use-composite-for-unequal-depths.patch b/x11-base/xorg-server/files/use-composite-for-unequal-depths.patch deleted file mode 100644 index fd2c5ad..0000000 --- a/x11-base/xorg-server/files/use-composite-for-unequal-depths.patch +++ /dev/null @@ -1,124 +0,0 @@ -Gentoo bug #191964 -freedesktop.org bug #7447 attachment #11368 -Fixed in 1.4 and newer - -diff --git a/composite/compalloc.c b/composite/compalloc.c -index f555411..006e808 100644 ---- a/composite/compalloc.c -+++ b/composite/compalloc.c -@@ -461,7 +461,6 @@ compNewPixmap (WindowPtr pWin, int x, int y, int w, int h) - ScreenPtr pScreen = pWin->drawable.pScreen; - WindowPtr pParent = pWin->parent; - PixmapPtr pPixmap; -- GCPtr pGC; - - pPixmap = (*pScreen->CreatePixmap) (pScreen, w, h, pWin->drawable.depth); - -@@ -471,25 +470,63 @@ compNewPixmap (WindowPtr pWin, int x, int y, int w, int h) - pPixmap->screen_x = x; - pPixmap->screen_y = y; - -- pGC = GetScratchGC (pWin->drawable.depth, pScreen); -- -- /* -- * Copy bits from the parent into the new pixmap so that it will -- * have "reasonable" contents in case for background None areas. -- */ -- if (pGC) -+ if (pParent->drawable.depth == pWin->drawable.depth) - { -- XID val = IncludeInferiors; -+ GCPtr pGC = GetScratchGC (pWin->drawable.depth, pScreen); - -- ValidateGC(&pPixmap->drawable, pGC); -- dixChangeGC (serverClient, pGC, GCSubwindowMode, &val, NULL); -- (*pGC->ops->CopyArea) (&pParent->drawable, -- &pPixmap->drawable, -- pGC, -- x - pParent->drawable.x, -- y - pParent->drawable.y, -- w, h, 0, 0); -- FreeScratchGC (pGC); -+ /* -+ * Copy bits from the parent into the new pixmap so that it will -+ * have "reasonable" contents in case for background None areas. -+ */ -+ if (pGC) -+ { -+ XID val = IncludeInferiors; -+ -+ ValidateGC(&pPixmap->drawable, pGC); -+ dixChangeGC (serverClient, pGC, GCSubwindowMode, &val, NULL); -+ (*pGC->ops->CopyArea) (&pParent->drawable, -+ &pPixmap->drawable, -+ pGC, -+ x - pParent->drawable.x, -+ y - pParent->drawable.y, -+ w, h, 0, 0); -+ FreeScratchGC (pGC); -+ } -+ } -+ else -+ { -+ PictFormatPtr pSrcFormat = compWindowFormat (pParent); -+ PictFormatPtr pDstFormat = compWindowFormat (pWin); -+ XID inferiors = IncludeInferiors; -+ int error; -+ -+ PicturePtr pSrcPicture = CreatePicture (None, -+ &pParent->drawable, -+ pSrcFormat, -+ CPSubwindowMode, -+ &inferiors, -+ serverClient, &error); -+ -+ PicturePtr pDstPicture = CreatePicture (None, -+ &pPixmap->drawable, -+ pDstFormat, -+ 0, 0, -+ serverClient, &error); -+ -+ if (pSrcPicture && pDstPicture) -+ { -+ CompositePicture (PictOpSrc, -+ pSrcPicture, -+ NULL, -+ pDstPicture, -+ x - pParent->drawable.x, -+ y - pParent->drawable.y, -+ 0, 0, 0, 0, w, h); -+ } -+ if (pSrcPicture) -+ FreePicture (pSrcPicture, 0); -+ if (pDstPicture) -+ FreePicture (pDstPicture, 0); - } - return pPixmap; - } -diff --git a/composite/compint.h b/composite/compint.h -index 38b1777..f69595c 100644 ---- a/composite/compint.h -+++ b/composite/compint.h -@@ -237,6 +237,9 @@ compCheckTree (ScreenPtr pScreen); - #define compCheckTree(s) - #endif - -+PictFormatPtr -+compWindowFormat (WindowPtr pWin); -+ - void - compSetPixmap (WindowPtr pWin, PixmapPtr pPixmap); - -diff --git a/composite/compwindow.c b/composite/compwindow.c -index a4c4e6f..bfd2946 100644 ---- a/composite/compwindow.c -+++ b/composite/compwindow.c -@@ -685,7 +685,7 @@ compGetWindowVisual (WindowPtr pWin) - return 0; - } - --static PictFormatPtr -+PictFormatPtr - compWindowFormat (WindowPtr pWin) - { - ScreenPtr pScreen = pWin->drawable.pScreen; |