[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg-server: Changes to 'debian-unstable'



 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 <jcristau@debian.org>
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 <jcristau@debian.org>  Sun, 07 Oct 2012 18:50:40 +0200
+ -- Julien Cristau <jcristau@debian.org>  Wed, 24 Oct 2012 16:46:48 +0200
 
 xorg-server (2:1.12.4-1) unstable; urgency=low
 

commit e756ff3b3d5cd15398eedd50daa1261dd0785f47
Author: Julien Cristau <jcristau@debian.org>
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 <jcristau@debian.org>  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 <michel@daenzer.net>
+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


Reply to: