debian/changelog | 6 debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff | 127 ++++++++++ debian/patches/series | 1 3 files changed, 132 insertions(+), 2 deletions(-)
New commits: commit cd8f16019743fd3cc6d0dbe5b1fdefa24d7805ee Author: Julien Cristau <[email protected]> Date: Sun Nov 4 00:43:25 2012 +0100 Upload to unstable diff --git a/debian/changelog b/debian/changelog index c586ffd..d62a530 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -xorg-server (2:1.12.4-2) UNRELEASED; urgency=low +xorg-server (2:1.12.4-2) unstable; urgency=low * Fix Xephyr command line option parsing (closes: #689246). Thanks, Andrzej Pietrasiewicz! @@ -7,7 +7,7 @@ xorg-server (2:1.12.4-2) UNRELEASED; urgency=low * EXA: Fall back earlier and more thoroughly from exaGlyphs (closes: #666468). Patch by Michel Dänzer stolen from upstream bugzilla. - -- Julien Cristau <[email protected]> Sun, 07 Oct 2012 18:50:40 +0200 + -- Julien Cristau <[email protected]> Wed, 24 Oct 2012 16:46:48 +0200 xorg-server (2:1.12.4-1) unstable; urgency=low commit e756ff3b3d5cd15398eedd50daa1261dd0785f47 Author: Julien Cristau <[email protected]> Date: Wed Oct 24 11:57:03 2012 +0200 EXA: Fall back earlier and more thoroughly from exaGlyphs (closes: #666468). Patch by Michel Dänzer stolen from upstream bugzilla. diff --git a/debian/changelog b/debian/changelog index 054673f..c586ffd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,8 @@ xorg-server (2:1.12.4-2) UNRELEASED; urgency=low Pietrasiewicz! * Restore {in,out}{b,w,l} on ia64 (closes: #685750). Thanks, Stephan Schreiber! + * EXA: Fall back earlier and more thoroughly from exaGlyphs (closes: + #666468). Patch by Michel Dänzer stolen from upstream bugzilla. -- Julien Cristau <[email protected]> Sun, 07 Oct 2012 18:50:40 +0200 diff --git a/debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff b/debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff new file mode 100644 index 0000000..76fc2b6 --- /dev/null +++ b/debian/patches/09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff @@ -0,0 +1,127 @@ +From: Michel Dänzer <[email protected]> +Subject: EXA: Fall back earlier and more thoroughly from exaGlyphs. (v2) + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47266 + +[https://bugs.freedesktop.org/attachment.cgi?id=59437, rebased by jcristau] + +Index: xorg-server/exa/exa_glyphs.c +=================================================================== +--- xorg-server.orig/exa/exa_glyphs.c ++++ xorg-server/exa/exa_glyphs.c +@@ -686,6 +686,7 @@ exaGlyphs(CARD8 op, + PixmapPtr pMaskPixmap = 0; + PicturePtr pMask = NULL; + ScreenPtr pScreen = pDst->pDrawable->pScreen; ++ ExaScreenPriv(pScreen); + int width = 0, height = 0; + int x, y; + int first_xOff = list->xOff, first_yOff = list->yOff; +@@ -697,7 +698,6 @@ exaGlyphs(CARD8 op, + ExaGlyphBuffer buffer; + + if (maskFormat) { +- ExaScreenPriv(pScreen); + GCPtr pGC; + xRectangle rect; + +@@ -719,22 +719,20 @@ exaGlyphs(CARD8 op, + maskFormat->depth, + CREATE_PIXMAP_USAGE_SCRATCH); + if (!pMaskPixmap) +- return; ++ goto fallback; + component_alpha = NeedsComponent(maskFormat->format); + pMask = CreatePicture(0, &pMaskPixmap->drawable, + maskFormat, CPComponentAlpha, &component_alpha, + serverClient, &error); +- if (!pMask || +- (!component_alpha && pExaScr->info->CheckComposite && +- !(*pExaScr->info->CheckComposite) (PictOpAdd, pSrc, NULL, pMask))) ++ (*pScreen->DestroyPixmap) (pMaskPixmap); ++ if (!pMask) ++ goto fallback; ++ ++ if (!component_alpha && pExaScr->info->CheckComposite && ++ !(*pExaScr->info->CheckComposite) (PictOpAdd, pSrc, NULL, pMask)) + { + PictFormatPtr argbFormat; + +- (*pScreen->DestroyPixmap) (pMaskPixmap); +- +- if (!pMask) +- return; +- + /* The driver can't seem to composite to a8, let's try argb (but + * without component-alpha) */ + FreePicture((pointer) pMask, (XID) 0); +@@ -748,15 +746,25 @@ exaGlyphs(CARD8 op, + maskFormat->depth, + CREATE_PIXMAP_USAGE_SCRATCH); + if (!pMaskPixmap) +- return; ++ goto fallback; + + pMask = CreatePicture(0, &pMaskPixmap->drawable, maskFormat, 0, 0, + serverClient, &error); +- if (!pMask) { +- (*pScreen->DestroyPixmap) (pMaskPixmap); +- return; +- } ++ (*pScreen->DestroyPixmap) (pMaskPixmap); ++ if (!pMask) ++ goto fallback; ++ } ++ ++ if (pExaScr->info->CheckComposite && ++ (!(*pExaScr->info->CheckComposite) (PictOpAdd, pSrc, NULL, pMask) || ++ (!(*pExaScr->info->CheckComposite) (op, pSrc, pMask, pDst) && ++ (op != PictOpOver || ++ !(*pExaScr->info->CheckComposite) (PictOpOutReverse, pSrc, pMask, pDst) || ++ !(*pExaScr->info->CheckComposite) (PictOpOver, pSrc, pMask, pDst))))) { ++ FreePicture ((pointer) pMask, (XID) 0); ++ goto fallback; + } ++ + pGC = GetScratchGC(pMaskPixmap->drawable.depth, pScreen); + ValidateGC(&pMaskPixmap->drawable, pGC); + rect.x = 0; +@@ -769,6 +777,13 @@ exaGlyphs(CARD8 op, + y = -extents.y1; + } + else { ++ if (pExaScr->info->CheckComposite && ++ !(*pExaScr->info->CheckComposite) (op, pSrc, NULL, pDst) && ++ (op != PictOpOver || ++ !(*pExaScr->info->CheckComposite) (PictOpOutReverse, pSrc, NULL, pDst) || ++ !(*pExaScr->info->CheckComposite) (PictOpOver, pSrc, NULL, pDst))) ++ goto fallback; ++ + x = 0; + y = 0; + } +@@ -834,6 +849,10 @@ exaGlyphs(CARD8 op, + xSrc + x - first_xOff, + ySrc + y - first_yOff, 0, 0, x, y, width, height); + FreePicture((pointer) pMask, (XID) 0); +- (*pScreen->DestroyPixmap) (pMaskPixmap); + } ++ ++ return; ++ ++fallback: ++ ExaCheckGlyphs(op, pSrc, pDst, maskFormat, xSrc, ySrc, nlist, list, glyphs); + } +Index: xorg-server/exa/exa_render.c +=================================================================== +--- xorg-server.orig/exa/exa_render.c ++++ xorg-server/exa/exa_render.c +@@ -878,7 +878,7 @@ exaComposite(CARD8 op, + Bool saveMaskRepeat = pMask ? pMask->repeat : 0; + RegionRec region; + +- if (pExaScr->swappedOut) ++ if (pExaScr->fallback_counter || pExaScr->swappedOut) + goto fallback; + + /* Remove repeat in source if useless */ diff --git a/debian/patches/series b/debian/patches/series index be5e00e..4e75993 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -9,3 +9,4 @@ 06_Revert-fb-reorder-Bresenham-error-correction-to-avoi.diff 07_Revert-kinput-allocate-enough-space-for-null-charact.diff 08_xfree86_fix_ia64_inx_outx.diff +09_EXA-Fall-back-earlier-and-more-thoroughly-from-exaGlyphs.diff -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

