<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[143917] trunk/dports/x11</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="https://trac.macports.org/changeset/143917">143917</a></dd>
<dt>Author</dt> <dd>jeremyhu@macports.org</dd>
<dt>Date</dt> <dd>2015-12-26 11:34:13 -0800 (Sat, 26 Dec 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>xorg-server{,-devel}: Workaround a clipping bug (#49465)</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkdportsx11xorgserverPortfile">trunk/dports/x11/xorg-server/Portfile</a></li>
<li><a href="#trunkdportsx11xorgserverfiles5000sdksymsshUseCPPFLAGSnotCFLAGSpatch">trunk/dports/x11/xorg-server/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch</a></li>
<li><a href="#trunkdportsx11xorgserverfiles5003fbRevertfbchangesthatbrokeXQuartzpatch">trunk/dports/x11/xorg-server/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch</a></li>
<li><a href="#trunkdportsx11xorgserverdevelPortfile">trunk/dports/x11/xorg-server-devel/Portfile</a></li>
<li><a href="#trunkdportsx11xorgserverdevelfiles5000sdksymsshUseCPPFLAGSnotCFLAGSpatch">trunk/dports/x11/xorg-server-devel/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch</a></li>
<li><a href="#trunkdportsx11xorgserverdevelfiles5003fbRevertfbchangesthatbrokeXQuartzpatch">trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkdportsx11xorgserverfiles5001WorkaroundtheGCclippingprobleminmiPaintWindowpatch">trunk/dports/x11/xorg-server/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch</a></li>
<li><a href="#trunkdportsx11xorgserverfiles5002UseoldmiTrapezoidsandmiTrianglesroutinespatch">trunk/dports/x11/xorg-server/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch</a></li>
<li><a href="#trunkdportsx11xorgserverfiles5004fbRevertfbchangesthatbrokeXQuartzpatch">trunk/dports/x11/xorg-server/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch</a></li>
<li><a href="#trunkdportsx11xorgserverdevelfiles5001WorkaroundtheGCclippingprobleminmiPaintWindowpatch">trunk/dports/x11/xorg-server-devel/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch</a></li>
<li><a href="#trunkdportsx11xorgserverdevelfiles5002UseoldmiTrapezoidsandmiTrianglesroutinespatch">trunk/dports/x11/xorg-server-devel/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch</a></li>
<li><a href="#trunkdportsx11xorgserverdevelfiles5004fbRevertfbchangesthatbrokeXQuartzpatch">trunk/dports/x11/xorg-server-devel/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkdportsx11xorgserverfiles5001UseoldmiTrapezoidsandmiTrianglesroutinespatch">trunk/dports/x11/xorg-server/files/5001-Use-old-miTrapezoids-and-miTriangles-routines.patch</a></li>
<li><a href="#trunkdportsx11xorgserverfiles5002fbRevertfbchangesthatbrokeXQuartzpatch">trunk/dports/x11/xorg-server/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch</a></li>
<li><a href="#trunkdportsx11xorgserverdevelfiles5001UseoldmiTrapezoidsandmiTrianglesroutinespatch">trunk/dports/x11/xorg-server-devel/files/5001-Use-old-miTrapezoids-and-miTriangles-routines.patch</a></li>
<li><a href="#trunkdportsx11xorgserverdevelfiles5002fbRevertfbchangesthatbrokeXQuartzpatch">trunk/dports/x11/xorg-server-devel/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkdportsx11xorgserverPortfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/x11/xorg-server/Portfile (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server/Portfile        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server/Portfile        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -6,6 +6,7 @@
</span><span class="cx"> conflicts       xorg-server-devel
</span><span class="cx"> set my_name        xorg-server
</span><span class="cx"> version                1.17.4
</span><ins>+revision        1
</ins><span class="cx"> categories        x11 devel
</span><span class="cx"> license                X11
</span><span class="cx"> maintainers        jeremyhu openmaintainer
</span><span class="lines">@@ -88,9 +89,10 @@
</span><span class="cx"> 
</span><span class="cx"> patchfiles \
</span><span class="cx">         5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch \
</span><del>-        5001-Use-old-miTrapezoids-and-miTriangles-routines.patch \
-        5002-fb-Revert-fb-changes-that-broke-XQuartz.patch \
-        5003-fb-Revert-fb-changes-that-broke-XQuartz.patch
</del><ins>+        5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch \
+        5002-Use-old-miTrapezoids-and-miTriangles-routines.patch \
+        5003-fb-Revert-fb-changes-that-broke-XQuartz.patch \
+        5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
</ins><span class="cx"> 
</span><span class="cx"> patch.pre_args -p1
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkdportsx11xorgserverfiles5000sdksymsshUseCPPFLAGSnotCFLAGSpatch"></a>
<div class="modfile"><h4>Modified: trunk/dports/x11/xorg-server/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><del>-From 6f240d1b8282a91e3e98a6e0832d1bebeaf936a8 Mon Sep 17 00:00:00 2001
</del><ins>+From dfc68da05dee3746d12a276975ef24857f3c8d3c Mon Sep 17 00:00:00 2001
</ins><span class="cx"> From: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
</span><span class="cx"> Date: Fri, 13 Jan 2012 12:00:57 -0800
</span><del>-Subject: [PATCH 5000/5003] sdksyms.sh: Use CPPFLAGS, not CFLAGS
</del><ins>+Subject: [PATCH 5000/5004] sdksyms.sh: Use CPPFLAGS, not CFLAGS
</ins><span class="cx"> 
</span><span class="cx"> CFLAGS can include flags which are not useful to the preprocessor
</span><span class="cx"> or can even cause it to fail.  This fixes a build issue on darwin
</span><span class="lines">@@ -37,5 +37,5 @@
</span><span class="cx">  SDKSYMS_DEP = sdksyms.dep
</span><span class="cx">  -include $(SDKSYMS_DEP)
</span><span class="cx"> -- 
</span><del>-2.6.2
</del><ins>+2.6.3
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkdportsx11xorgserverfiles5001UseoldmiTrapezoidsandmiTrianglesroutinespatch"></a>
<div class="delfile"><h4>Deleted: trunk/dports/x11/xorg-server/files/5001-Use-old-miTrapezoids-and-miTriangles-routines.patch (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server/files/5001-Use-old-miTrapezoids-and-miTriangles-routines.patch        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server/files/5001-Use-old-miTrapezoids-and-miTriangles-routines.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -1,297 +0,0 @@
</span><del>-From f82de0aedf8716e2dbca5827007ea543502e7093 Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
-Date: Sat, 2 Nov 2013 11:00:23 -0700
-Subject: [PATCH 5001/5003] Use old miTrapezoids and miTriangles routines
-
-Reverts commits:
-    788ccb9a8bcf6a4fb4054c507111eec3338fb969
-    566f1931ee2916269e164e114bffaf2da1d039d1
-
-http://xquartz.macosforge.org/trac/ticket/525
-
-Signed-off-by: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
----
- fb/fbpict.c     |   2 -
- render/mipict.c |   4 +-
- render/mipict.h |  27 ++++++++++++++
- render/mitrap.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- render/mitri.c  |  61 +++++++++++++++++++++++++++++++
- 5 files changed, 201 insertions(+), 4 deletions(-)
-
-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 5f6c88e..936a11b 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -508,10 +508,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
-     ps-&gt;UnrealizeGlyph = fbUnrealizeGlyph;
-     ps-&gt;CompositeRects = miCompositeRects;
-     ps-&gt;RasterizeTrapezoid = fbRasterizeTrapezoid;
--    ps-&gt;Trapezoids = fbTrapezoids;
-     ps-&gt;AddTraps = fbAddTraps;
-     ps-&gt;AddTriangles = fbAddTriangles;
--    ps-&gt;Triangles = fbTriangles;

-     return TRUE;
- }
-diff --git a/render/mipict.c b/render/mipict.c
-index a725104..e14293a 100644
---- a/render/mipict.c
-+++ b/render/mipict.c
-@@ -575,8 +575,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
-     ps-&gt;Composite = 0;          /* requires DDX support */
-     ps-&gt;Glyphs = miGlyphs;
-     ps-&gt;CompositeRects = miCompositeRects;
--    ps-&gt;Trapezoids = 0;
--    ps-&gt;Triangles = 0;
-+    ps-&gt;Trapezoids = miTrapezoids;
-+    ps-&gt;Triangles = miTriangles;

-     ps-&gt;RasterizeTrapezoid = 0; /* requires DDX support */
-     ps-&gt;AddTraps = 0;           /* requires DDX support */
-diff --git a/render/mipict.h b/render/mipict.h
-index 23ce9e8..e0f1d4c 100644
---- a/render/mipict.h
-+++ b/render/mipict.h
-@@ -122,6 +122,16 @@ miCompositeRects(CARD8 op,
-                  xRenderColor * color, int nRect, xRectangle *rects);

- extern _X_EXPORT void
-+miTriangles (CARD8            op,
-+             PicturePtr            pSrc,
-+             PicturePtr            pDst,
-+             PictFormatPtr  maskFormat,
-+             INT16            xSrc,
-+             INT16            ySrc,
-+             int            ntri,
-+             xTriangle            *tris);
-+
-+extern _X_EXPORT void

- miTriStrip(CARD8 op,
-            PicturePtr pSrc,
-@@ -137,10 +147,27 @@ miTriFan(CARD8 op,
-          PictFormatPtr maskFormat,
-          INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);

-+extern _X_EXPORT PicturePtr
-+miCreateAlphaPicture (ScreenPtr            pScreen, 
-+                      PicturePtr    pDst,
-+                      PictFormatPtr pPictFormat,
-+                      CARD16            width,
-+                      CARD16            height);
-+
- extern _X_EXPORT void
-  miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box);

- extern _X_EXPORT void
-+miTrapezoids (CARD8        op,
-+             PicturePtr    pSrc,
-+             PicturePtr    pDst,
-+             PictFormatPtr maskFormat,
-+             INT16         xSrc,
-+             INT16         ySrc,
-+             int           ntrap,
-+             xTrapezoid    *traps);
-+
-+extern _X_EXPORT void
-  miPointFixedBounds(int npoint, xPointFixed * points, BoxPtr bounds);

- extern _X_EXPORT void
-diff --git a/render/mitrap.c b/render/mitrap.c
-index 17b6dcd..71c1857 100644
---- a/render/mitrap.c
-+++ b/render/mitrap.c
-@@ -34,6 +34,55 @@
- #include &quot;picturestr.h&quot;
- #include &quot;mipict.h&quot;

-+PicturePtr
-+miCreateAlphaPicture (ScreenPtr            pScreen, 
-+                      PicturePtr    pDst,
-+                      PictFormatPtr pPictFormat,
-+                      CARD16            width,
-+                      CARD16            height)
-+{
-+    PixmapPtr            pPixmap;
-+    PicturePtr            pPicture;
-+    GCPtr            pGC;
-+    int                    error;
-+    xRectangle            rect;
-+
-+    if (width &gt; 32767 || height &gt; 32767)
-+        return 0;
-+
-+    if (!pPictFormat)
-+    {
-+        if (pDst-&gt;polyEdge == PolyEdgeSharp)
-+            pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
-+        else
-+            pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
-+        if (!pPictFormat)
-+            return 0;
-+    }
-+
-+    pPixmap = (*pScreen-&gt;CreatePixmap) (pScreen, width, height, 
-+                                        pPictFormat-&gt;depth, 0);
-+    if (!pPixmap)
-+        return 0;
-+    pGC = GetScratchGC (pPixmap-&gt;drawable.depth, pScreen);
-+    if (!pGC)
-+    {
-+        (*pScreen-&gt;DestroyPixmap) (pPixmap);
-+        return 0;
-+    }
-+    ValidateGC (&amp;pPixmap-&gt;drawable, pGC);
-+    rect.x = 0;
-+    rect.y = 0;
-+    rect.width = width;
-+    rect.height = height;
-+    (*pGC-&gt;ops-&gt;PolyFillRect)(&amp;pPixmap-&gt;drawable, pGC, 1, &amp;rect);
-+    FreeScratchGC (pGC);
-+    pPicture = CreatePicture (0, &amp;pPixmap-&gt;drawable, pPictFormat,
-+                              0, 0, serverClient, &amp;error);
-+    (*pScreen-&gt;DestroyPixmap) (pPixmap);
-+    return pPicture;
-+}
-+
- static xFixed
- miLineFixedX(xLineFixed * l, xFixed y, Bool ceil)
- {
-@@ -79,3 +128,65 @@ miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box)
-             box-&gt;x2 = x2;
-     }
- }
-+
-+
-+void
-+miTrapezoids (CARD8        op,
-+             PicturePtr    pSrc,
-+             PicturePtr    pDst,
-+             PictFormatPtr maskFormat,
-+             INT16         xSrc,
-+             INT16         ySrc,
-+             int           ntrap,
-+             xTrapezoid    *traps)
-+{
-+    ScreenPtr          pScreen = pDst-&gt;pDrawable-&gt;pScreen;
-+    PictureScreenPtr    ps = GetPictureScreen(pScreen);
-+
-+    /*
-+     * Check for solid alpha add
-+     */
-+    if (op == PictOpAdd &amp;&amp; miIsSolidAlpha (pSrc))
-+    {
-+       for (; ntrap; ntrap--, traps++)
-+           (*ps-&gt;RasterizeTrapezoid) (pDst, traps, 0, 0);
-+    } 
-+    else if (maskFormat)
-+    {
-+       PicturePtr      pPicture;
-+       BoxRec          bounds;
-+       INT16           xDst, yDst;
-+       INT16           xRel, yRel;
-+       
-+       xDst = traps[0].left.p1.x &gt;&gt; 16;
-+       yDst = traps[0].left.p1.y &gt;&gt; 16;
-+
-+       miTrapezoidBounds (ntrap, traps, &amp;bounds);
-+       if (bounds.y1 &gt;= bounds.y2 || bounds.x1 &gt;= bounds.x2)
-+           return;
-+       pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
-+                                        bounds.x2 - bounds.x1,
-+                                        bounds.y2 - bounds.y1);
-+       if (!pPicture)
-+           return;
-+       for (; ntrap; ntrap--, traps++)
-+           (*ps-&gt;RasterizeTrapezoid) (pPicture, traps, 
-+                                      -bounds.x1, -bounds.y1);
-+       xRel = bounds.x1 + xSrc - xDst;
-+       yRel = bounds.y1 + ySrc - yDst;
-+       CompositePicture (op, pSrc, pPicture, pDst,
-+                         xRel, yRel, 0, 0, bounds.x1, bounds.y1,
-+                         bounds.x2 - bounds.x1,
-+                         bounds.y2 - bounds.y1);
-+       FreePicture (pPicture, 0);
-+    }
-+    else
-+    {
-+       if (pDst-&gt;polyEdge == PolyEdgeSharp)
-+           maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
-+       else
-+           maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
-+       for (; ntrap; ntrap--, traps++)
-+           miTrapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps);
-+    }
-+}
-diff --git a/render/mitri.c b/render/mitri.c
-index 922f22a..bdca9ca 100644
---- a/render/mitri.c
-+++ b/render/mitri.c
-@@ -65,3 +65,64 @@ miTriangleBounds(int ntri, xTriangle * tris, BoxPtr bounds)
- {
-     miPointFixedBounds(ntri * 3, (xPointFixed *) tris, bounds);
- }
-+
-+
-+void
-+miTriangles (CARD8            op,
-+             PicturePtr            pSrc,
-+             PicturePtr            pDst,
-+             PictFormatPtr  maskFormat,
-+             INT16            xSrc,
-+             INT16            ySrc,
-+             int            ntri,
-+             xTriangle            *tris)
-+{
-+    ScreenPtr                pScreen = pDst-&gt;pDrawable-&gt;pScreen;
-+    PictureScreenPtr    ps = GetPictureScreen(pScreen);
-+    
-+    /*
-+     * Check for solid alpha add
-+     */
-+    if (op == PictOpAdd &amp;&amp; miIsSolidAlpha (pSrc))
-+    {
-+        (*ps-&gt;AddTriangles) (pDst, 0, 0, ntri, tris);
-+    }
-+    else if (maskFormat)
-+    {
-+        BoxRec                bounds;
-+        PicturePtr        pPicture;
-+        INT16                xDst, yDst;
-+        INT16                xRel, yRel;
-+        
-+        xDst = tris[0].p1.x &gt;&gt; 16;
-+        yDst = tris[0].p1.y &gt;&gt; 16;
-+
-+        miTriangleBounds (ntri, tris, &amp;bounds);
-+        if (bounds.x2 &lt;= bounds.x1 || bounds.y2 &lt;= bounds.y1)
-+            return;
-+        pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
-+                                         bounds.x2 - bounds.x1,
-+                                         bounds.y2 - bounds.y1);
-+        if (!pPicture)
-+            return;
-+        (*ps-&gt;AddTriangles) (pPicture, -bounds.x1, -bounds.y1, ntri, tris);
-+        
-+        xRel = bounds.x1 + xSrc - xDst;
-+        yRel = bounds.y1 + ySrc - yDst;
-+        CompositePicture (op, pSrc, pPicture, pDst,
-+                          xRel, yRel, 0, 0, bounds.x1, bounds.y1,
-+                          bounds.x2 - bounds.x1, bounds.y2 - bounds.y1);
-+        FreePicture (pPicture, 0);
-+    }
-+    else
-+    {
-+        if (pDst-&gt;polyEdge == PolyEdgeSharp)
-+            maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
-+        else
-+            maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
-+        
-+        for (; ntri; ntri--, tris++)
-+            miTriangles (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, tris);
-+    }
-+}
-+
--- 
-2.6.2
-
</del></span></pre></div>
<a id="trunkdportsx11xorgserverfiles5001WorkaroundtheGCclippingprobleminmiPaintWindowpatch"></a>
<div class="addfile"><h4>Added: trunk/dports/x11/xorg-server/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch (0 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch                                (rev 0)
+++ trunk/dports/x11/xorg-server/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -0,0 +1,164 @@
</span><ins>+From 3b373e580907bdf97d17057db309df4055f5d4b8 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
+Date: Fri, 30 Apr 2010 13:08:25 -0700
+Subject: [PATCH 5001/5004] Workaround the GC clipping problem in miPaintWindow
+ and add some debugging output.
+
+Signed-off-by: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
+---
+ mi/miexpose.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 93 insertions(+), 10 deletions(-)
+
+diff --git a/mi/miexpose.c b/mi/miexpose.c
+index 3e49f15..bfb8333 100644
+--- a/mi/miexpose.c
++++ b/mi/miexpose.c
+@@ -408,7 +408,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
+ void RootlessStartDrawing(WindowPtr pWin);
+ void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
+ Bool IsFramedWindow(WindowPtr pWin);
+-#endif
++#include &quot;../fb/fb.h&quot;
++#endif 

+ void
+ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+@@ -437,23 +438,37 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+     Bool solid = TRUE;
+     DrawablePtr drawable = &amp;pWin-&gt;drawable;

++#ifdef XQUARTZ_CLIP_DEBUG
++    ErrorF(&quot;START %d BS %d (pR = %ld)\n&quot;, what, pWin-&gt;backgroundState, ParentRelative);
++    ErrorF(&quot;      Rgn: %d %d %d %d\n&quot;, prgn-&gt;extents.x1, prgn-&gt;extents.y1,
++                                       prgn-&gt;extents.x2 - prgn-&gt;extents.x1,
++                                       prgn-&gt;extents.y2 - prgn-&gt;extents.y1);
++    ErrorF(&quot;      Win: %d %d (%d %d) %d %d\n&quot;, pWin-&gt;origin.x, pWin-&gt;origin.y,
++                                               pWin-&gt;winSize.extents.x1, pWin-&gt;winSize.extents.y1,
++                                               pWin-&gt;winSize.extents.x2 - pWin-&gt;winSize.extents.x1,
++                                               pWin-&gt;winSize.extents.y2 - pWin-&gt;winSize.extents.y1);
++    ErrorF(&quot;     Draw: %d %d %d %d\n&quot;, pWin-&gt;drawable.x, pWin-&gt;drawable.y,
++                                       pWin-&gt;drawable.width, pWin-&gt;drawable.height);
++#endif
++
+ #ifdef ROOTLESS
+     if (!drawable || drawable-&gt;type == UNDRAWABLE_WINDOW)
+         return;
++#endif
++    
++    if (what == PW_BACKGROUND)
++    {
++#ifdef ROOTLESS
++        if(IsFramedWindow(pWin)) {
++            RootlessStartDrawing(pWin);
++            RootlessDamageRegion(pWin, prgn);

+-    if (IsFramedWindow(pWin)) {
+-        RootlessStartDrawing(pWin);
+-        RootlessDamageRegion(pWin, prgn);
+-
+-        if (pWin-&gt;backgroundState == ParentRelative) {
+-            if ((what == PW_BACKGROUND) ||
+-                (what == PW_BORDER &amp;&amp; !pWin-&gt;borderIsPixel))
++            if(pWin-&gt;backgroundState == ParentRelative) {
+                 RootlessSetPixmapOfAncestors(pWin);
++            }
+         }
+-    }
+ #endif

+-    if (what == PW_BACKGROUND) {
+         while (pWin-&gt;backgroundState == ParentRelative)
+             pWin = pWin-&gt;parent;

+@@ -478,6 +493,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+     else {
+         PixmapPtr pixmap;

++#ifdef ROOTLESS
++        if(IsFramedWindow(pWin)) {
++            RootlessStartDrawing(pWin);
++            RootlessDamageRegion(pWin, prgn);
++            
++            if(!pWin-&gt;borderIsPixel &amp;&amp;
++                pWin-&gt;backgroundState == ParentRelative) {
++                RootlessSetPixmapOfAncestors(pWin);
++            }
++        }
++#endif
++
+         fill = pWin-&gt;border;
+         solid = pWin-&gt;borderIsPixel;

+@@ -487,6 +514,11 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+         pixmap = (*pScreen-&gt;GetWindowPixmap) ((WindowPtr) drawable);
+         drawable = &amp;pixmap-&gt;drawable;

++#ifdef XQUARTZ_CLIP_DEBUG
++        ErrorF(&quot;     Draw: %d %d %d %d\n&quot;,
++               drawable-&gt;x, drawable-&gt;y, drawable-&gt;width, drawable-&gt;height);    
++#endif
++        
+         while (pWin-&gt;backgroundState == ParentRelative)
+             pWin = pWin-&gt;parent;

+@@ -553,6 +585,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+     ChangeGC(NullClient, pGC, gcmask, gcval);
+     ValidateGC(drawable, pGC);

++#ifdef XQUARTZ_CLIP_DEBUG
++    ErrorF(&quot;       GC: %d %d %d %d\n&quot;,
++           pGC-&gt;pCompositeClip-&gt;extents.x1, pGC-&gt;pCompositeClip-&gt;extents.y1,
++           pGC-&gt;pCompositeClip-&gt;extents.x2 - pGC-&gt;pCompositeClip-&gt;extents.x1,
++           pGC-&gt;pCompositeClip-&gt;extents.y2 - pGC-&gt;pCompositeClip-&gt;extents.y1);
++#endif
++    
++#ifdef XQUARTZ
++    /* Looks like our clipping isn't set right for some reason:
++     * http://xquartz.macosforge.org/trac/ticket/290
++     */
++    if(what == PW_BORDER) {
++
++#if 0
++        if(solid) {
++#if 1
++            fbFillRegionSolid(&amp;pWin-&gt;drawable,
++                              prgn,
++                              0,
++                              fbReplicatePixel(fill.pixel,
++                                               pWin-&gt;drawable.bitsPerPixel));
++#else
++            fbFillRegionSolid(drawable,
++                              prgn,
++                              0,
++                              fbReplicatePixel(fill.pixel,
++                                               drawable-&gt;bitsPerPixel));
++#endif
++            return;
++        }
++#endif
++    
++        pGC-&gt;pCompositeClip-&gt;extents.x1 += prgn-&gt;extents.x1;
++        pGC-&gt;pCompositeClip-&gt;extents.y1 += prgn-&gt;extents.y1;
++        pGC-&gt;pCompositeClip-&gt;extents.x2 += prgn-&gt;extents.x1;
++        pGC-&gt;pCompositeClip-&gt;extents.y2 += prgn-&gt;extents.y1;
++        
++        if(pGC-&gt;pCompositeClip-&gt;extents.x2 &gt; drawable-&gt;pScreen-&gt;width)
++            pGC-&gt;pCompositeClip-&gt;extents.x2 = drawable-&gt;pScreen-&gt;width;
++        if(pGC-&gt;pCompositeClip-&gt;extents.y2 &gt; drawable-&gt;pScreen-&gt;height)
++            pGC-&gt;pCompositeClip-&gt;extents.y2 = drawable-&gt;pScreen-&gt;height;
++    }
++#endif
++
++#ifdef XQUARTZ_CLIP_DEBUG
++    ErrorF(&quot;       GC: %d %d %d %d\n&quot;,
++           pGC-&gt;pCompositeClip-&gt;extents.x1, pGC-&gt;pCompositeClip-&gt;extents.y1,
++           pGC-&gt;pCompositeClip-&gt;extents.x2 - pGC-&gt;pCompositeClip-&gt;extents.x1,
++           pGC-&gt;pCompositeClip-&gt;extents.y2 - pGC-&gt;pCompositeClip-&gt;extents.y1);    
++#endif
++
+     numRects = RegionNumRects(prgn);
+     pbox = RegionRects(prgn);
+     for (i = numRects; --i &gt;= 0; pbox++, prect++) {
+-- 
+2.6.3
+
</ins></span></pre></div>
<a id="trunkdportsx11xorgserverfiles5002UseoldmiTrapezoidsandmiTrianglesroutinespatch"></a>
<div class="addfile"><h4>Added: trunk/dports/x11/xorg-server/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch (0 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch                                (rev 0)
+++ trunk/dports/x11/xorg-server/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -0,0 +1,297 @@
</span><ins>+From 378118bbf40f70ca3fb7bb9d6e564aaefec104be Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
+Date: Sat, 2 Nov 2013 11:00:23 -0700
+Subject: [PATCH 5002/5004] Use old miTrapezoids and miTriangles routines
+
+Reverts commits:
+    788ccb9a8bcf6a4fb4054c507111eec3338fb969
+    566f1931ee2916269e164e114bffaf2da1d039d1
+
+http://xquartz.macosforge.org/trac/ticket/525
+
+Signed-off-by: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
+---
+ fb/fbpict.c     |   2 -
+ render/mipict.c |   4 +-
+ render/mipict.h |  27 ++++++++++++++
+ render/mitrap.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ render/mitri.c  |  61 +++++++++++++++++++++++++++++++
+ 5 files changed, 201 insertions(+), 4 deletions(-)
+
+diff --git a/fb/fbpict.c b/fb/fbpict.c
+index 5f6c88e..936a11b 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -508,10 +508,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+     ps-&gt;UnrealizeGlyph = fbUnrealizeGlyph;
+     ps-&gt;CompositeRects = miCompositeRects;
+     ps-&gt;RasterizeTrapezoid = fbRasterizeTrapezoid;
+-    ps-&gt;Trapezoids = fbTrapezoids;
+     ps-&gt;AddTraps = fbAddTraps;
+     ps-&gt;AddTriangles = fbAddTriangles;
+-    ps-&gt;Triangles = fbTriangles;

+     return TRUE;
+ }
+diff --git a/render/mipict.c b/render/mipict.c
+index a725104..e14293a 100644
+--- a/render/mipict.c
++++ b/render/mipict.c
+@@ -575,8 +575,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+     ps-&gt;Composite = 0;          /* requires DDX support */
+     ps-&gt;Glyphs = miGlyphs;
+     ps-&gt;CompositeRects = miCompositeRects;
+-    ps-&gt;Trapezoids = 0;
+-    ps-&gt;Triangles = 0;
++    ps-&gt;Trapezoids = miTrapezoids;
++    ps-&gt;Triangles = miTriangles;

+     ps-&gt;RasterizeTrapezoid = 0; /* requires DDX support */
+     ps-&gt;AddTraps = 0;           /* requires DDX support */
+diff --git a/render/mipict.h b/render/mipict.h
+index 23ce9e8..e0f1d4c 100644
+--- a/render/mipict.h
++++ b/render/mipict.h
+@@ -122,6 +122,16 @@ miCompositeRects(CARD8 op,
+                  xRenderColor * color, int nRect, xRectangle *rects);

+ extern _X_EXPORT void
++miTriangles (CARD8            op,
++             PicturePtr            pSrc,
++             PicturePtr            pDst,
++             PictFormatPtr  maskFormat,
++             INT16            xSrc,
++             INT16            ySrc,
++             int            ntri,
++             xTriangle            *tris);
++
++extern _X_EXPORT void

+ miTriStrip(CARD8 op,
+            PicturePtr pSrc,
+@@ -137,10 +147,27 @@ miTriFan(CARD8 op,
+          PictFormatPtr maskFormat,
+          INT16 xSrc, INT16 ySrc, int npoints, xPointFixed * points);

++extern _X_EXPORT PicturePtr
++miCreateAlphaPicture (ScreenPtr            pScreen, 
++                      PicturePtr    pDst,
++                      PictFormatPtr pPictFormat,
++                      CARD16            width,
++                      CARD16            height);
++
+ extern _X_EXPORT void
+  miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box);

+ extern _X_EXPORT void
++miTrapezoids (CARD8        op,
++             PicturePtr    pSrc,
++             PicturePtr    pDst,
++             PictFormatPtr maskFormat,
++             INT16         xSrc,
++             INT16         ySrc,
++             int           ntrap,
++             xTrapezoid    *traps);
++
++extern _X_EXPORT void
+  miPointFixedBounds(int npoint, xPointFixed * points, BoxPtr bounds);

+ extern _X_EXPORT void
+diff --git a/render/mitrap.c b/render/mitrap.c
+index 17b6dcd..71c1857 100644
+--- a/render/mitrap.c
++++ b/render/mitrap.c
+@@ -34,6 +34,55 @@
+ #include &quot;picturestr.h&quot;
+ #include &quot;mipict.h&quot;

++PicturePtr
++miCreateAlphaPicture (ScreenPtr            pScreen, 
++                      PicturePtr    pDst,
++                      PictFormatPtr pPictFormat,
++                      CARD16            width,
++                      CARD16            height)
++{
++    PixmapPtr            pPixmap;
++    PicturePtr            pPicture;
++    GCPtr            pGC;
++    int                    error;
++    xRectangle            rect;
++
++    if (width &gt; 32767 || height &gt; 32767)
++        return 0;
++
++    if (!pPictFormat)
++    {
++        if (pDst-&gt;polyEdge == PolyEdgeSharp)
++            pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++        else
++            pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++        if (!pPictFormat)
++            return 0;
++    }
++
++    pPixmap = (*pScreen-&gt;CreatePixmap) (pScreen, width, height, 
++                                        pPictFormat-&gt;depth, 0);
++    if (!pPixmap)
++        return 0;
++    pGC = GetScratchGC (pPixmap-&gt;drawable.depth, pScreen);
++    if (!pGC)
++    {
++        (*pScreen-&gt;DestroyPixmap) (pPixmap);
++        return 0;
++    }
++    ValidateGC (&amp;pPixmap-&gt;drawable, pGC);
++    rect.x = 0;
++    rect.y = 0;
++    rect.width = width;
++    rect.height = height;
++    (*pGC-&gt;ops-&gt;PolyFillRect)(&amp;pPixmap-&gt;drawable, pGC, 1, &amp;rect);
++    FreeScratchGC (pGC);
++    pPicture = CreatePicture (0, &amp;pPixmap-&gt;drawable, pPictFormat,
++                              0, 0, serverClient, &amp;error);
++    (*pScreen-&gt;DestroyPixmap) (pPixmap);
++    return pPicture;
++}
++
+ static xFixed
+ miLineFixedX(xLineFixed * l, xFixed y, Bool ceil)
+ {
+@@ -79,3 +128,65 @@ miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box)
+             box-&gt;x2 = x2;
+     }
+ }
++
++
++void
++miTrapezoids (CARD8        op,
++             PicturePtr    pSrc,
++             PicturePtr    pDst,
++             PictFormatPtr maskFormat,
++             INT16         xSrc,
++             INT16         ySrc,
++             int           ntrap,
++             xTrapezoid    *traps)
++{
++    ScreenPtr          pScreen = pDst-&gt;pDrawable-&gt;pScreen;
++    PictureScreenPtr    ps = GetPictureScreen(pScreen);
++
++    /*
++     * Check for solid alpha add
++     */
++    if (op == PictOpAdd &amp;&amp; miIsSolidAlpha (pSrc))
++    {
++       for (; ntrap; ntrap--, traps++)
++           (*ps-&gt;RasterizeTrapezoid) (pDst, traps, 0, 0);
++    } 
++    else if (maskFormat)
++    {
++       PicturePtr      pPicture;
++       BoxRec          bounds;
++       INT16           xDst, yDst;
++       INT16           xRel, yRel;
++       
++       xDst = traps[0].left.p1.x &gt;&gt; 16;
++       yDst = traps[0].left.p1.y &gt;&gt; 16;
++
++       miTrapezoidBounds (ntrap, traps, &amp;bounds);
++       if (bounds.y1 &gt;= bounds.y2 || bounds.x1 &gt;= bounds.x2)
++           return;
++       pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
++                                        bounds.x2 - bounds.x1,
++                                        bounds.y2 - bounds.y1);
++       if (!pPicture)
++           return;
++       for (; ntrap; ntrap--, traps++)
++           (*ps-&gt;RasterizeTrapezoid) (pPicture, traps, 
++                                      -bounds.x1, -bounds.y1);
++       xRel = bounds.x1 + xSrc - xDst;
++       yRel = bounds.y1 + ySrc - yDst;
++       CompositePicture (op, pSrc, pPicture, pDst,
++                         xRel, yRel, 0, 0, bounds.x1, bounds.y1,
++                         bounds.x2 - bounds.x1,
++                         bounds.y2 - bounds.y1);
++       FreePicture (pPicture, 0);
++    }
++    else
++    {
++       if (pDst-&gt;polyEdge == PolyEdgeSharp)
++           maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++       else
++           maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++       for (; ntrap; ntrap--, traps++)
++           miTrapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps);
++    }
++}
+diff --git a/render/mitri.c b/render/mitri.c
+index 922f22a..bdca9ca 100644
+--- a/render/mitri.c
++++ b/render/mitri.c
+@@ -65,3 +65,64 @@ miTriangleBounds(int ntri, xTriangle * tris, BoxPtr bounds)
+ {
+     miPointFixedBounds(ntri * 3, (xPointFixed *) tris, bounds);
+ }
++
++
++void
++miTriangles (CARD8            op,
++             PicturePtr            pSrc,
++             PicturePtr            pDst,
++             PictFormatPtr  maskFormat,
++             INT16            xSrc,
++             INT16            ySrc,
++             int            ntri,
++             xTriangle            *tris)
++{
++    ScreenPtr                pScreen = pDst-&gt;pDrawable-&gt;pScreen;
++    PictureScreenPtr    ps = GetPictureScreen(pScreen);
++    
++    /*
++     * Check for solid alpha add
++     */
++    if (op == PictOpAdd &amp;&amp; miIsSolidAlpha (pSrc))
++    {
++        (*ps-&gt;AddTriangles) (pDst, 0, 0, ntri, tris);
++    }
++    else if (maskFormat)
++    {
++        BoxRec                bounds;
++        PicturePtr        pPicture;
++        INT16                xDst, yDst;
++        INT16                xRel, yRel;
++        
++        xDst = tris[0].p1.x &gt;&gt; 16;
++        yDst = tris[0].p1.y &gt;&gt; 16;
++
++        miTriangleBounds (ntri, tris, &amp;bounds);
++        if (bounds.x2 &lt;= bounds.x1 || bounds.y2 &lt;= bounds.y1)
++            return;
++        pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
++                                         bounds.x2 - bounds.x1,
++                                         bounds.y2 - bounds.y1);
++        if (!pPicture)
++            return;
++        (*ps-&gt;AddTriangles) (pPicture, -bounds.x1, -bounds.y1, ntri, tris);
++        
++        xRel = bounds.x1 + xSrc - xDst;
++        yRel = bounds.y1 + ySrc - yDst;
++        CompositePicture (op, pSrc, pPicture, pDst,
++                          xRel, yRel, 0, 0, bounds.x1, bounds.y1,
++                          bounds.x2 - bounds.x1, bounds.y2 - bounds.y1);
++        FreePicture (pPicture, 0);
++    }
++    else
++    {
++        if (pDst-&gt;polyEdge == PolyEdgeSharp)
++            maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++        else
++            maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++        
++        for (; ntri; ntri--, tris++)
++            miTriangles (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, tris);
++    }
++}
++
+-- 
+2.6.3
+
</ins></span></pre></div>
<a id="trunkdportsx11xorgserverfiles5002fbRevertfbchangesthatbrokeXQuartzpatch"></a>
<div class="delfile"><h4>Deleted: trunk/dports/x11/xorg-server/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -1,320 +0,0 @@
</span><del>-From d276e11261d1aac14570036cbf84993b7ab714eb Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
-Date: Fri, 12 Feb 2010 19:48:52 -0800
-Subject: [PATCH 5002/5003] fb: Revert fb changes that broke XQuartz
-
-http://bugs.freedesktop.org/show_bug.cgi?id=26124
-
-Revert &quot;Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5.&quot;
-Revert &quot;fb: Adjust transform or composite coordinates for pixman operations&quot;
-
-http://bugs.freedesktop.org/26124
-
-This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
-This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
-
-Signed-off-by: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
----
- fb/fb.h     |  3 +--
- fb/fbpict.c | 82 ++++++++++++++++++-------------------------------------------
- fb/fbtrap.c | 43 ++++++++++++++------------------
- 3 files changed, 43 insertions(+), 85 deletions(-)
-
-diff --git a/fb/fb.h b/fb/fb.h
-index c687aa7..256a1ee 100644
---- a/fb/fb.h
-+++ b/fb/fb.h
-@@ -1321,8 +1321,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
-                   RegionPtr pRegion, FbBits and, FbBits xor);

- extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict,
--                                                 Bool has_clip,
--                                                 int *xoff, int *yoff);
-+                                                 Bool has_clip);

- extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *);

-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 936a11b..a99cee6 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -46,23 +46,18 @@ fbComposite(CARD8 op,
-             INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
- {
-     pixman_image_t *src, *mask, *dest;
--    int src_xoff, src_yoff;
--    int msk_xoff, msk_yoff;
--    int dst_xoff, dst_yoff;
--
-     miCompositeSourceValidate(pSrc);
-     if (pMask)
-         miCompositeSourceValidate(pMask);

--    src = image_from_pict(pSrc, FALSE, &amp;src_xoff, &amp;src_yoff);
--    mask = image_from_pict(pMask, FALSE, &amp;msk_xoff, &amp;msk_yoff);
--    dest = image_from_pict(pDst, TRUE, &amp;dst_xoff, &amp;dst_yoff);
-+    src = image_from_pict(pSrc, TRUE);
-+    mask = image_from_pict(pMask, TRUE);
-+    dest = image_from_pict(pDst, TRUE);

-     if (src &amp;&amp; dest &amp;&amp; !(pMask &amp;&amp; !mask)) {
-         pixman_image_composite(op, src, mask, dest,
--                               xSrc + src_xoff, ySrc + src_yoff,
--                               xMask + msk_xoff, yMask + msk_yoff,
--                               xDst + dst_xoff, yDst + dst_yoff, width, height);
-+                               xSrc, ySrc, xMask, yMask, xDst, yDst,
-+                               width, height);
-     }

-     free_pixman_pict(pSrc, src);
-@@ -289,20 +284,22 @@ create_conical_gradient_image(PictGradient * gradient)
- }

- static pixman_image_t *
--create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-+create_bits_picture(PicturePtr pict, Bool has_clip)
- {
--    PixmapPtr pixmap;
-     FbBits *bits;
-     FbStride stride;
--    int bpp;
-+    int bpp, xoff, yoff;
-     pixman_image_t *image;

--    fbGetDrawablePixmap(pict-&gt;pDrawable, pixmap, *xoff, *yoff);
--    fbGetPixmapBitsData(pixmap, bits, stride, bpp);
-+    fbGetDrawable (pict-&gt;pDrawable, bits, stride, bpp, xoff, yoff);
-+
-+    bits = (FbBits*)((CARD8*)bits +
-+                     (pict-&gt;pDrawable-&gt;y + yoff) * stride * sizeof(FbBits) +
-+                     (pict-&gt;pDrawable-&gt;x + xoff) * (bpp / 8));

-     image = pixman_image_create_bits((pixman_format_code_t) pict-&gt;format,
--                                     pixmap-&gt;drawable.width,
--                                     pixmap-&gt;drawable.height, (uint32_t *) bits,
-+                                     pict-&gt;pDrawable-&gt;width,
-+                                     pict-&gt;pDrawable-&gt;height, (uint32_t *) bits,
-                                      stride * sizeof(FbStride));

-     if (!image)
-@@ -321,28 +318,21 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-         if (pict-&gt;clientClip)
-             pixman_image_set_has_client_clip(image, TRUE);

--        if (*xoff || *yoff)
--            pixman_region_translate(pict-&gt;pCompositeClip, *xoff, *yoff);
-+        pixman_region_translate (pict-&gt;pCompositeClip, - pict-&gt;pDrawable-&gt;x, - pict-&gt;pDrawable-&gt;y);

-         pixman_image_set_clip_region(image, pict-&gt;pCompositeClip);

--        if (*xoff || *yoff)
--            pixman_region_translate(pict-&gt;pCompositeClip, -*xoff, -*yoff);
-+        pixman_region_translate (pict-&gt;pCompositeClip, pict-&gt;pDrawable-&gt;x, pict-&gt;pDrawable-&gt;y);
-     }

-     /* Indexed table */
-     if (pict-&gt;pFormat-&gt;index.devPrivate)
-         pixman_image_set_indexed(image, pict-&gt;pFormat-&gt;index.devPrivate);

--    /* Add in drawable origin to position within the image */
--    *xoff += pict-&gt;pDrawable-&gt;x;
--    *yoff += pict-&gt;pDrawable-&gt;y;
--
-     return image;
- }

- static pixman_image_t *image_from_pict_internal(PicturePtr pict, Bool has_clip,
--                                                int *xoff, int *yoff,
-                                                 Bool is_alpha_map);

- static void image_destroy(pixman_image_t *image, void *data)
-@@ -351,32 +341,13 @@ static void image_destroy(pixman_image_t *image, void *data)
- }

- static void
--set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
--                     int *xoff, int *yoff, Bool is_alpha_map)
-+set_image_properties(pixman_image_t * image, PicturePtr pict, Bool is_alpha_map)
- {
-     pixman_repeat_t repeat;
-     pixman_filter_t filter;

-     if (pict-&gt;transform) {
--        /* For source images, adjust the transform to account
--         * for the drawable offset within the pixman image,
--         * then set the offset to 0 as it will be used
--         * to compute positions within the transformed image.
--         */
--        if (!has_clip) {
--            struct pixman_transform adjusted;
--
--            adjusted = *pict-&gt;transform;
--            pixman_transform_translate(&amp;adjusted,
--                                       NULL,
--                                       pixman_int_to_fixed(*xoff),
--                                       pixman_int_to_fixed(*yoff));
--            pixman_image_set_transform(image, &amp;adjusted);
--            *xoff = 0;
--            *yoff = 0;
--        }
--        else
--            pixman_image_set_transform(image, pict-&gt;transform);
-+        pixman_image_set_transform(image, pict-&gt;transform);
-     }

-     switch (pict-&gt;repeatType) {
-@@ -404,10 +375,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
-      * as the alpha map for this operation
-      */
-     if (pict-&gt;alphaMap &amp;&amp; !is_alpha_map) {
--        int alpha_xoff, alpha_yoff;
-         pixman_image_t *alpha_map =
--            image_from_pict_internal(pict-&gt;alphaMap, FALSE, &amp;alpha_xoff,
--                                     &amp;alpha_yoff, TRUE);
-+            image_from_pict_internal(pict-&gt;alphaMap, TRUE, TRUE);

-         pixman_image_set_alpha_map(image, alpha_map, pict-&gt;alphaOrigin.x,
-                                    pict-&gt;alphaOrigin.y);
-@@ -445,8 +414,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
- }

- static pixman_image_t *
--image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
--                         Bool is_alpha_map)
-+image_from_pict_internal(PicturePtr pict, Bool has_clip, Bool is_alpha_map)
- {
-     pixman_image_t *image = NULL;

-@@ -454,7 +422,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
-         return NULL;

-     if (pict-&gt;pDrawable) {
--        image = create_bits_picture(pict, has_clip, xoff, yoff);
-+        image = create_bits_picture(pict, has_clip);
-     }
-     else if (pict-&gt;pSourcePict) {
-         SourcePict *sp = pict-&gt;pSourcePict;
-@@ -472,19 +440,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
-             else if (sp-&gt;type == SourcePictTypeConical)
-                 image = create_conical_gradient_image(gradient);
-         }
--        *xoff = *yoff = 0;
-     }

-     if (image)
--        set_image_properties(image, pict, has_clip, xoff, yoff, is_alpha_map);
--
-+        set_image_properties (image, pict, is_alpha_map);
-     return image;
- }

- pixman_image_t *
--image_from_pict(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-+image_from_pict (PicturePtr pict, Bool has_clip)
- {
--    return image_from_pict_internal(pict, has_clip, xoff, yoff, FALSE);
-+    return image_from_pict_internal (pict, has_clip, FALSE);
- }

- void
-diff --git a/fb/fbtrap.c b/fb/fbtrap.c
-index bf82f8f..0145ce9 100644
---- a/fb/fbtrap.c
-+++ b/fb/fbtrap.c
-@@ -36,13 +36,12 @@ fbAddTraps(PicturePtr pPicture,
-            INT16 x_off, INT16 y_off, int ntrap, xTrap * traps)
- {
-     pixman_image_t *image;
--    int dst_xoff, dst_yoff;

--    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
--        return;
--
--    pixman_add_traps(image, x_off + dst_xoff, y_off + dst_yoff,
--                     ntrap, (pixman_trap_t *) traps);
-+    if (!(image = image_from_pict (pPicture, FALSE)))
-+        return;
-+    
-+    pixman_add_traps(image, x_off, y_off,
-+                     ntrap, (pixman_trap_t *)traps);

-     free_pixman_pict(pPicture, image);
- }
-@@ -52,13 +51,12 @@ fbRasterizeTrapezoid(PicturePtr pPicture,
-                      xTrapezoid * trap, int x_off, int y_off)
- {
-     pixman_image_t *image;
--    int dst_xoff, dst_yoff;

--    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
-+    if (!(image = image_from_pict (pPicture, FALSE)))
-         return;

--    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *) trap,
--                               x_off + dst_xoff, y_off + dst_yoff);
-+    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *)trap,
-+                               x_off, y_off);

-     free_pixman_pict(pPicture, image);
- }
-@@ -68,14 +66,12 @@ fbAddTriangles(PicturePtr pPicture,
-                INT16 x_off, INT16 y_off, int ntri, xTriangle * tris)
- {
-     pixman_image_t *image;
--    int dst_xoff, dst_yoff;

--    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
-+    if (!(image = image_from_pict (pPicture, FALSE)))
-         return;
--
--    pixman_add_triangles(image,
--                         dst_xoff + x_off, dst_yoff + y_off,
--                         ntri, (pixman_triangle_t *) tris);
-+    
-+    pixman_add_triangles(image, x_off, y_off, ntri,
-+                         (pixman_triangle_t *)tris);

-     free_pixman_pict(pPicture, image);
- }
-@@ -98,13 +94,11 @@ fbShapes(CompositeShapesFunc composite,
-          int16_t ySrc, int nshapes, int shape_size, const uint8_t * shapes)
- {
-     pixman_image_t *src, *dst;
--    int src_xoff, src_yoff;
--    int dst_xoff, dst_yoff;

-     miCompositeSourceValidate(pSrc);

--    src = image_from_pict(pSrc, FALSE, &amp;src_xoff, &amp;src_yoff);
--    dst = image_from_pict(pDst, TRUE, &amp;dst_xoff, &amp;dst_yoff);
-+    src = image_from_pict(pSrc, FALSE);
-+    dst = image_from_pict(pDst, TRUE);

-     if (src &amp;&amp; dst) {
-         pixman_format_code_t format;
-@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,

-             for (i = 0; i &lt; nshapes; ++i) {
-                 composite(op, src, dst, format,
--                          xSrc + src_xoff,
--                          ySrc + src_yoff,
--                          dst_xoff, dst_yoff, 1, shapes + i * shape_size);
-+                          xSrc, ySrc, 0, 0, 
-+                          1, shapes + i * shape_size);
-             }
-         }
-         else {
-@@ -143,8 +136,8 @@ fbShapes(CompositeShapesFunc composite,
-             }

-             composite(op, src, dst, format,
--                      xSrc + src_xoff,
--                      ySrc + src_yoff, dst_xoff, dst_yoff, nshapes, shapes);
-+                      xSrc, ySrc, 0, 0,
-+                      nshapes, shapes);
-         }

-         DamageRegionProcessPending(pDst-&gt;pDrawable);
--- 
-2.6.2
-
</del></span></pre></div>
<a id="trunkdportsx11xorgserverfiles5003fbRevertfbchangesthatbrokeXQuartzpatch"></a>
<div class="modfile"><h4>Modified: trunk/dports/x11/xorg-server/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -1,243 +1,320 @@
</span><del>-From 890d8e7a5f91436543f1b3eb28b9c33f022376a5 Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
-Date: Sat, 31 May 2014 13:14:20 -0700
-Subject: [PATCH 5003/5003] fb: Revert fb changes that broke XQuartz
</del><ins>+From bdcae84eefc467fa96a8feb033bf74c4e00e50df Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
+Date: Fri, 12 Feb 2010 19:48:52 -0800
+Subject: [PATCH 5003/5004] fb: Revert fb changes that broke XQuartz
</ins><span class="cx"> 
</span><del>-    http://bugs.freedesktop.org/show_bug.cgi?id=26124
</del><ins>+http://bugs.freedesktop.org/show_bug.cgi?id=26124
</ins><span class="cx"> 
</span><del>-Revert &quot;Use new pixman_glyph_cache_t API that will be in pixman 0.28.0&quot;
-Revert &quot;fb: Fix origin of source picture in fbGlyphs&quot;
-Revert &quot;fb: Publish fbGlyphs and fbUnrealizeGlyph&quot;
</del><ins>+Revert &quot;Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5.&quot;
+Revert &quot;fb: Adjust transform or composite coordinates for pixman operations&quot;
</ins><span class="cx"> 
</span><del>-This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
-This reverts commit 983e30361f49a67252d0b5d82630e70724d69dbf.
-This reverts commit 3c2c59eed3c68c0e5a93c38cf01eedad015e3157.
</del><ins>+http://bugs.freedesktop.org/26124
+
+This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
+This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
+
+Signed-off-by: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
</ins><span class="cx"> ---
</span><del>- fb/fb.h       |   3 --
- fb/fbpict.c   | 149 +---------------------------------------------------------
- fb/fbpict.h   |  11 +----
- fb/fbscreen.c |   1 -
- 4 files changed, 2 insertions(+), 162 deletions(-)
</del><ins>+ fb/fb.h     |  3 +--
+ fb/fbpict.c | 82 ++++++++++++++++++-------------------------------------------
+ fb/fbtrap.c | 43 ++++++++++++++------------------
+ 3 files changed, 43 insertions(+), 85 deletions(-)
</ins><span class="cx"> 
</span><span class="cx"> diff --git a/fb/fb.h b/fb/fb.h
</span><del>-index 256a1ee..8e87498 100644
</del><ins>+index c687aa7..256a1ee 100644
</ins><span class="cx"> --- a/fb/fb.h
</span><span class="cx"> +++ b/fb/fb.h
</span><del>-@@ -1111,9 +1111,6 @@ extern _X_EXPORT void
- extern _X_EXPORT Bool
-  fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
</del><ins>+@@ -1321,8 +1321,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
+                   RegionPtr pRegion, FbBits and, FbBits xor);
</ins><span class="cx">  
</span><del>--extern _X_EXPORT void
--fbDestroyGlyphCache(void);
--
- /*
-  * fbpixmap.c
-  */
</del><ins>+ extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict,
+-                                                 Bool has_clip,
+-                                                 int *xoff, int *yoff);
++                                                 Bool has_clip);

+ extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *);

</ins><span class="cx"> diff --git a/fb/fbpict.c b/fb/fbpict.c
</span><del>-index a99cee6..66dd633 100644
</del><ins>+index 936a11b..a99cee6 100644
</ins><span class="cx"> --- a/fb/fbpict.c
</span><span class="cx"> +++ b/fb/fbpict.c
</span><del>-@@ -65,152 +65,6 @@ fbComposite(CARD8 op,
-     free_pixman_pict(pDst, dest);
</del><ins>+@@ -46,23 +46,18 @@ fbComposite(CARD8 op,
+             INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
+ {
+     pixman_image_t *src, *mask, *dest;
+-    int src_xoff, src_yoff;
+-    int msk_xoff, msk_yoff;
+-    int dst_xoff, dst_yoff;
+-
+     miCompositeSourceValidate(pSrc);
+     if (pMask)
+         miCompositeSourceValidate(pMask);

+-    src = image_from_pict(pSrc, FALSE, &amp;src_xoff, &amp;src_yoff);
+-    mask = image_from_pict(pMask, FALSE, &amp;msk_xoff, &amp;msk_yoff);
+-    dest = image_from_pict(pDst, TRUE, &amp;dst_xoff, &amp;dst_yoff);
++    src = image_from_pict(pSrc, TRUE);
++    mask = image_from_pict(pMask, TRUE);
++    dest = image_from_pict(pDst, TRUE);

+     if (src &amp;&amp; dest &amp;&amp; !(pMask &amp;&amp; !mask)) {
+         pixman_image_composite(op, src, mask, dest,
+-                               xSrc + src_xoff, ySrc + src_yoff,
+-                               xMask + msk_xoff, yMask + msk_yoff,
+-                               xDst + dst_xoff, yDst + dst_yoff, width, height);
++                               xSrc, ySrc, xMask, yMask, xDst, yDst,
++                               width, height);
+     }

+     free_pixman_pict(pSrc, src);
+@@ -289,20 +284,22 @@ create_conical_gradient_image(PictGradient * gradient)
</ins><span class="cx">  }
</span><span class="cx">  
</span><del>--static pixman_glyph_cache_t *glyphCache;
</del><ins>+ static pixman_image_t *
+-create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
++create_bits_picture(PicturePtr pict, Bool has_clip)
+ {
+-    PixmapPtr pixmap;
+     FbBits *bits;
+     FbStride stride;
+-    int bpp;
++    int bpp, xoff, yoff;
+     pixman_image_t *image;

+-    fbGetDrawablePixmap(pict-&gt;pDrawable, pixmap, *xoff, *yoff);
+-    fbGetPixmapBitsData(pixmap, bits, stride, bpp);
++    fbGetDrawable (pict-&gt;pDrawable, bits, stride, bpp, xoff, yoff);
++
++    bits = (FbBits*)((CARD8*)bits +
++                     (pict-&gt;pDrawable-&gt;y + yoff) * stride * sizeof(FbBits) +
++                     (pict-&gt;pDrawable-&gt;x + xoff) * (bpp / 8));

+     image = pixman_image_create_bits((pixman_format_code_t) pict-&gt;format,
+-                                     pixmap-&gt;drawable.width,
+-                                     pixmap-&gt;drawable.height, (uint32_t *) bits,
++                                     pict-&gt;pDrawable-&gt;width,
++                                     pict-&gt;pDrawable-&gt;height, (uint32_t *) bits,
+                                      stride * sizeof(FbStride));

+     if (!image)
+@@ -321,28 +318,21 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+         if (pict-&gt;clientClip)
+             pixman_image_set_has_client_clip(image, TRUE);

+-        if (*xoff || *yoff)
+-            pixman_region_translate(pict-&gt;pCompositeClip, *xoff, *yoff);
++        pixman_region_translate (pict-&gt;pCompositeClip, - pict-&gt;pDrawable-&gt;x, - pict-&gt;pDrawable-&gt;y);

+         pixman_image_set_clip_region(image, pict-&gt;pCompositeClip);

+-        if (*xoff || *yoff)
+-            pixman_region_translate(pict-&gt;pCompositeClip, -*xoff, -*yoff);
++        pixman_region_translate (pict-&gt;pCompositeClip, pict-&gt;pDrawable-&gt;x, pict-&gt;pDrawable-&gt;y);
+     }

+     /* Indexed table */
+     if (pict-&gt;pFormat-&gt;index.devPrivate)
+         pixman_image_set_indexed(image, pict-&gt;pFormat-&gt;index.devPrivate);

+-    /* Add in drawable origin to position within the image */
+-    *xoff += pict-&gt;pDrawable-&gt;x;
+-    *yoff += pict-&gt;pDrawable-&gt;y;
</ins><span class="cx"> -
</span><del>--void
--fbDestroyGlyphCache(void)
--{
--    if (glyphCache)
--    {
--        pixman_glyph_cache_destroy (glyphCache);
--        glyphCache = NULL;
--    }
--}
</del><ins>+     return image;
+ }

+ static pixman_image_t *image_from_pict_internal(PicturePtr pict, Bool has_clip,
+-                                                int *xoff, int *yoff,
+                                                 Bool is_alpha_map);

+ static void image_destroy(pixman_image_t *image, void *data)
+@@ -351,32 +341,13 @@ static void image_destroy(pixman_image_t *image, void *data)
+ }

+ static void
+-set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+-                     int *xoff, int *yoff, Bool is_alpha_map)
++set_image_properties(pixman_image_t * image, PicturePtr pict, Bool is_alpha_map)
+ {
+     pixman_repeat_t repeat;
+     pixman_filter_t filter;

+     if (pict-&gt;transform) {
+-        /* For source images, adjust the transform to account
+-         * for the drawable offset within the pixman image,
+-         * then set the offset to 0 as it will be used
+-         * to compute positions within the transformed image.
+-         */
+-        if (!has_clip) {
+-            struct pixman_transform adjusted;
</ins><span class="cx"> -
</span><del>--static void
--fbUnrealizeGlyph(ScreenPtr pScreen,
--                 GlyphPtr pGlyph)
--{
--    if (glyphCache)
--        pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
--}
</del><ins>+-            adjusted = *pict-&gt;transform;
+-            pixman_transform_translate(&amp;adjusted,
+-                                       NULL,
+-                                       pixman_int_to_fixed(*xoff),
+-                                       pixman_int_to_fixed(*yoff));
+-            pixman_image_set_transform(image, &amp;adjusted);
+-            *xoff = 0;
+-            *yoff = 0;
+-        }
+-        else
+-            pixman_image_set_transform(image, pict-&gt;transform);
++        pixman_image_set_transform(image, pict-&gt;transform);
+     }

+     switch (pict-&gt;repeatType) {
+@@ -404,10 +375,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+      * as the alpha map for this operation
+      */
+     if (pict-&gt;alphaMap &amp;&amp; !is_alpha_map) {
+-        int alpha_xoff, alpha_yoff;
+         pixman_image_t *alpha_map =
+-            image_from_pict_internal(pict-&gt;alphaMap, FALSE, &amp;alpha_xoff,
+-                                     &amp;alpha_yoff, TRUE);
++            image_from_pict_internal(pict-&gt;alphaMap, TRUE, TRUE);

+         pixman_image_set_alpha_map(image, alpha_map, pict-&gt;alphaOrigin.x,
+                                    pict-&gt;alphaOrigin.y);
+@@ -445,8 +414,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+ }

+ static pixman_image_t *
+-image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+-                         Bool is_alpha_map)
++image_from_pict_internal(PicturePtr pict, Bool has_clip, Bool is_alpha_map)
+ {
+     pixman_image_t *image = NULL;

+@@ -454,7 +422,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+         return NULL;

+     if (pict-&gt;pDrawable) {
+-        image = create_bits_picture(pict, has_clip, xoff, yoff);
++        image = create_bits_picture(pict, has_clip);
+     }
+     else if (pict-&gt;pSourcePict) {
+         SourcePict *sp = pict-&gt;pSourcePict;
+@@ -472,19 +440,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+             else if (sp-&gt;type == SourcePictTypeConical)
+                 image = create_conical_gradient_image(gradient);
+         }
+-        *xoff = *yoff = 0;
+     }

+     if (image)
+-        set_image_properties(image, pict, has_clip, xoff, yoff, is_alpha_map);
</ins><span class="cx"> -
</span><del>--void
--fbGlyphs(CARD8 op,
--         PicturePtr pSrc,
--         PicturePtr pDst,
--         PictFormatPtr maskFormat,
--         INT16 xSrc,
--         INT16 ySrc, int nlist,
--         GlyphListPtr list,
--         GlyphPtr *glyphs)
--{
--#define N_STACK_GLYPHS 512
--    ScreenPtr pScreen = pDst-&gt;pDrawable-&gt;pScreen;
--    pixman_glyph_t stack_glyphs[N_STACK_GLYPHS];
--    pixman_glyph_t *pglyphs = stack_glyphs;
--    pixman_image_t *srcImage, *dstImage;
--    int srcXoff, srcYoff, dstXoff, dstYoff;
--    GlyphPtr glyph;
--    int n_glyphs;
--    int x, y;
--    int i, n;
--    int xDst = list-&gt;xOff, yDst = list-&gt;yOff;
</del><ins>++        set_image_properties (image, pict, is_alpha_map);
+     return image;
+ }

+ pixman_image_t *
+-image_from_pict(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
++image_from_pict (PicturePtr pict, Bool has_clip)
+ {
+-    return image_from_pict_internal(pict, has_clip, xoff, yoff, FALSE);
++    return image_from_pict_internal (pict, has_clip, FALSE);
+ }

+ void
+diff --git a/fb/fbtrap.c b/fb/fbtrap.c
+index bf82f8f..0145ce9 100644
+--- a/fb/fbtrap.c
++++ b/fb/fbtrap.c
+@@ -36,13 +36,12 @@ fbAddTraps(PicturePtr pPicture,
+            INT16 x_off, INT16 y_off, int ntrap, xTrap * traps)
+ {
+     pixman_image_t *image;
+-    int dst_xoff, dst_yoff;

+-    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
+-        return;
</ins><span class="cx"> -
</span><del>--    miCompositeSourceValidate(pSrc);
--
--    n_glyphs = 0;
--    for (i = 0; i &lt; nlist; ++i)
--        n_glyphs += list[i].len;
--
--    if (!glyphCache)
--        glyphCache = pixman_glyph_cache_create();
--
--    pixman_glyph_cache_freeze (glyphCache);
--
--    if (n_glyphs &gt; N_STACK_GLYPHS) {
--        if (!(pglyphs = malloc (n_glyphs * sizeof (pixman_glyph_t))))
--            goto out;
--    }
--
--    i = 0;
--    x = y = 0;
--    while (nlist--) {
--        x += list-&gt;xOff;
--        y += list-&gt;yOff;
--        n = list-&gt;len;
--        while (n--) {
--            const void *g;
--
--            glyph = *glyphs++;
--
--            if (!(g = pixman_glyph_cache_lookup (glyphCache, glyph, NULL))) {
--                pixman_image_t *glyphImage;
--                PicturePtr pPicture;
--                int xoff, yoff;
--
--                pPicture = GetGlyphPicture(glyph, pScreen);
--                if (!pPicture) {
--                    n_glyphs--;
--                    goto next;
--                }
--
--                if (!(glyphImage = image_from_pict(pPicture, FALSE, &amp;xoff, &amp;yoff)))
--                    goto out;
--
--                g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
--                                              glyph-&gt;info.x,
--                                              glyph-&gt;info.y,
--                                              glyphImage);
--
--                free_pixman_pict(pPicture, glyphImage);
--
--                if (!g)
--                    goto out;
--            }
--
--            pglyphs[i].x = x;
--            pglyphs[i].y = y;
--            pglyphs[i].glyph = g;
--            i++;
--
--        next:
--            x += glyph-&gt;info.xOff;
--            y += glyph-&gt;info.yOff;
--        }
--        list++;
--    }
--
--    if (!(srcImage = image_from_pict(pSrc, FALSE, &amp;srcXoff, &amp;srcYoff)))
--        goto out;
--
--    if (!(dstImage = image_from_pict(pDst, TRUE, &amp;dstXoff, &amp;dstYoff)))
--        goto out_free_src;
--
--    if (maskFormat) {
--        pixman_format_code_t format;
--        pixman_box32_t extents;
--
--        format = maskFormat-&gt;format | (maskFormat-&gt;depth &lt;&lt; 24);
--
--        pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &amp;extents);
--
--        pixman_composite_glyphs(op, srcImage, dstImage, format,
--                                xSrc + srcXoff + extents.x1 - xDst, ySrc + srcYoff + extents.y1 - yDst,
--                                extents.x1, extents.y1,
--                                extents.x1 + dstXoff, extents.y1 + dstYoff,
--                                extents.x2 - extents.x1,
--                                extents.y2 - extents.y1,
--                                glyphCache, n_glyphs, pglyphs);
--    }
--    else {
--        pixman_composite_glyphs_no_mask(op, srcImage, dstImage,
--                                        xSrc + srcXoff - xDst, ySrc + srcYoff - yDst,
--                                        dstXoff, dstYoff,
--                                        glyphCache, n_glyphs, pglyphs);
--    }
--
--    free_pixman_pict(pDst, dstImage);
--
--out_free_src:
--    free_pixman_pict(pSrc, srcImage);
--
--out:
--    pixman_glyph_cache_thaw(glyphCache);
--    if (pglyphs != stack_glyphs)
--        free(pglyphs);
--}
--
- static pixman_image_t *
- create_solid_fill_image(PicturePtr pict)
</del><ins>+-    pixman_add_traps(image, x_off + dst_xoff, y_off + dst_yoff,
+-                     ntrap, (pixman_trap_t *) traps);
++    if (!(image = image_from_pict (pPicture, FALSE)))
++        return;
++    
++    pixman_add_traps(image, x_off, y_off,
++                     ntrap, (pixman_trap_t *)traps);

+     free_pixman_pict(pPicture, image);
+ }
+@@ -52,13 +51,12 @@ fbRasterizeTrapezoid(PicturePtr pPicture,
+                      xTrapezoid * trap, int x_off, int y_off)
</ins><span class="cx">  {
</span><del>-@@ -470,8 +324,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
-         return FALSE;
-     ps = GetPictureScreen(pScreen);
-     ps-&gt;Composite = fbComposite;
--    ps-&gt;Glyphs = fbGlyphs;
--    ps-&gt;UnrealizeGlyph = fbUnrealizeGlyph;
-+    ps-&gt;Glyphs = miGlyphs;
-     ps-&gt;CompositeRects = miCompositeRects;
-     ps-&gt;RasterizeTrapezoid = fbRasterizeTrapezoid;
-     ps-&gt;AddTraps = fbAddTraps;
-diff --git a/fb/fbpict.h b/fb/fbpict.h
-index 5cb8663..110f32d 100644
---- a/fb/fbpict.h
-+++ b/fb/fbpict.h
-@@ -65,20 +65,11 @@ fbTrapezoids(CARD8 op,
-              INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
</del><ins>+     pixman_image_t *image;
+-    int dst_xoff, dst_yoff;
</ins><span class="cx">  
</span><del>- extern _X_EXPORT void
-+
- fbTriangles(CARD8 op,
-             PicturePtr pSrc,
-             PicturePtr pDst,
-             PictFormatPtr maskFormat,
-             INT16 xSrc, INT16 ySrc, int ntris, xTriangle * tris);
</del><ins>+-    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
++    if (!(image = image_from_pict (pPicture, FALSE)))
+         return;
</ins><span class="cx">  
</span><del>--extern _X_EXPORT void
--fbGlyphs(CARD8 op,
--         PicturePtr pSrc,
--         PicturePtr pDst,
--         PictFormatPtr maskFormat,
--         INT16 xSrc,
--         INT16 ySrc, int nlist,
--         GlyphListPtr list,
--         GlyphPtr *glyphs);
</del><ins>+-    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *) trap,
+-                               x_off + dst_xoff, y_off + dst_yoff);
++    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *)trap,
++                               x_off, y_off);

+     free_pixman_pict(pPicture, image);
+ }
+@@ -68,14 +66,12 @@ fbAddTriangles(PicturePtr pPicture,
+                INT16 x_off, INT16 y_off, int ntri, xTriangle * tris)
+ {
+     pixman_image_t *image;
+-    int dst_xoff, dst_yoff;

+-    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
++    if (!(image = image_from_pict (pPicture, FALSE)))
+         return;
</ins><span class="cx"> -
</span><del>- #endif                          /* _FBPICT_H_ */
-diff --git a/fb/fbscreen.c b/fb/fbscreen.c
-index 71bcc5d..55330fc 100644
---- a/fb/fbscreen.c
-+++ b/fb/fbscreen.c
-@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
-     int d;
-     DepthPtr depths = pScreen-&gt;allowedDepths;
</del><ins>+-    pixman_add_triangles(image,
+-                         dst_xoff + x_off, dst_yoff + y_off,
+-                         ntri, (pixman_triangle_t *) tris);
++    
++    pixman_add_triangles(image, x_off, y_off, ntri,
++                         (pixman_triangle_t *)tris);
</ins><span class="cx">  
</span><del>--    fbDestroyGlyphCache();
-     for (d = 0; d &lt; pScreen-&gt;numDepths; d++)
-         free(depths[d].vids);
-     free(depths);
</del><ins>+     free_pixman_pict(pPicture, image);
+ }
+@@ -98,13 +94,11 @@ fbShapes(CompositeShapesFunc composite,
+          int16_t ySrc, int nshapes, int shape_size, const uint8_t * shapes)
+ {
+     pixman_image_t *src, *dst;
+-    int src_xoff, src_yoff;
+-    int dst_xoff, dst_yoff;

+     miCompositeSourceValidate(pSrc);

+-    src = image_from_pict(pSrc, FALSE, &amp;src_xoff, &amp;src_yoff);
+-    dst = image_from_pict(pDst, TRUE, &amp;dst_xoff, &amp;dst_yoff);
++    src = image_from_pict(pSrc, FALSE);
++    dst = image_from_pict(pDst, TRUE);

+     if (src &amp;&amp; dst) {
+         pixman_format_code_t format;
+@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,

+             for (i = 0; i &lt; nshapes; ++i) {
+                 composite(op, src, dst, format,
+-                          xSrc + src_xoff,
+-                          ySrc + src_yoff,
+-                          dst_xoff, dst_yoff, 1, shapes + i * shape_size);
++                          xSrc, ySrc, 0, 0, 
++                          1, shapes + i * shape_size);
+             }
+         }
+         else {
+@@ -143,8 +136,8 @@ fbShapes(CompositeShapesFunc composite,
+             }

+             composite(op, src, dst, format,
+-                      xSrc + src_xoff,
+-                      ySrc + src_yoff, dst_xoff, dst_yoff, nshapes, shapes);
++                      xSrc, ySrc, 0, 0,
++                      nshapes, shapes);
+         }

+         DamageRegionProcessPending(pDst-&gt;pDrawable);
</ins><span class="cx"> -- 
</span><del>-2.6.2
</del><ins>+2.6.3
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkdportsx11xorgserverfiles5004fbRevertfbchangesthatbrokeXQuartzpatch"></a>
<div class="addfile"><h4>Added: trunk/dports/x11/xorg-server/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch (0 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch                                (rev 0)
+++ trunk/dports/x11/xorg-server/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -0,0 +1,243 @@
</span><ins>+From e1b7d7d104a545eea0443c8404cb2407977ea1bc Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
+Date: Sat, 31 May 2014 13:14:20 -0700
+Subject: [PATCH 5004/5004] fb: Revert fb changes that broke XQuartz
+
+    http://bugs.freedesktop.org/show_bug.cgi?id=26124
+
+Revert &quot;Use new pixman_glyph_cache_t API that will be in pixman 0.28.0&quot;
+Revert &quot;fb: Fix origin of source picture in fbGlyphs&quot;
+Revert &quot;fb: Publish fbGlyphs and fbUnrealizeGlyph&quot;
+
+This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
+This reverts commit 983e30361f49a67252d0b5d82630e70724d69dbf.
+This reverts commit 3c2c59eed3c68c0e5a93c38cf01eedad015e3157.
+---
+ fb/fb.h       |   3 --
+ fb/fbpict.c   | 149 +---------------------------------------------------------
+ fb/fbpict.h   |  11 +----
+ fb/fbscreen.c |   1 -
+ 4 files changed, 2 insertions(+), 162 deletions(-)
+
+diff --git a/fb/fb.h b/fb/fb.h
+index 256a1ee..8e87498 100644
+--- a/fb/fb.h
++++ b/fb/fb.h
+@@ -1111,9 +1111,6 @@ extern _X_EXPORT void
+ extern _X_EXPORT Bool
+  fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);

+-extern _X_EXPORT void
+-fbDestroyGlyphCache(void);
+-
+ /*
+  * fbpixmap.c
+  */
+diff --git a/fb/fbpict.c b/fb/fbpict.c
+index a99cee6..66dd633 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -65,152 +65,6 @@ fbComposite(CARD8 op,
+     free_pixman_pict(pDst, dest);
+ }

+-static pixman_glyph_cache_t *glyphCache;
+-
+-void
+-fbDestroyGlyphCache(void)
+-{
+-    if (glyphCache)
+-    {
+-        pixman_glyph_cache_destroy (glyphCache);
+-        glyphCache = NULL;
+-    }
+-}
+-
+-static void
+-fbUnrealizeGlyph(ScreenPtr pScreen,
+-                 GlyphPtr pGlyph)
+-{
+-    if (glyphCache)
+-        pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
+-}
+-
+-void
+-fbGlyphs(CARD8 op,
+-         PicturePtr pSrc,
+-         PicturePtr pDst,
+-         PictFormatPtr maskFormat,
+-         INT16 xSrc,
+-         INT16 ySrc, int nlist,
+-         GlyphListPtr list,
+-         GlyphPtr *glyphs)
+-{
+-#define N_STACK_GLYPHS 512
+-    ScreenPtr pScreen = pDst-&gt;pDrawable-&gt;pScreen;
+-    pixman_glyph_t stack_glyphs[N_STACK_GLYPHS];
+-    pixman_glyph_t *pglyphs = stack_glyphs;
+-    pixman_image_t *srcImage, *dstImage;
+-    int srcXoff, srcYoff, dstXoff, dstYoff;
+-    GlyphPtr glyph;
+-    int n_glyphs;
+-    int x, y;
+-    int i, n;
+-    int xDst = list-&gt;xOff, yDst = list-&gt;yOff;
+-
+-    miCompositeSourceValidate(pSrc);
+-
+-    n_glyphs = 0;
+-    for (i = 0; i &lt; nlist; ++i)
+-        n_glyphs += list[i].len;
+-
+-    if (!glyphCache)
+-        glyphCache = pixman_glyph_cache_create();
+-
+-    pixman_glyph_cache_freeze (glyphCache);
+-
+-    if (n_glyphs &gt; N_STACK_GLYPHS) {
+-        if (!(pglyphs = malloc (n_glyphs * sizeof (pixman_glyph_t))))
+-            goto out;
+-    }
+-
+-    i = 0;
+-    x = y = 0;
+-    while (nlist--) {
+-        x += list-&gt;xOff;
+-        y += list-&gt;yOff;
+-        n = list-&gt;len;
+-        while (n--) {
+-            const void *g;
+-
+-            glyph = *glyphs++;
+-
+-            if (!(g = pixman_glyph_cache_lookup (glyphCache, glyph, NULL))) {
+-                pixman_image_t *glyphImage;
+-                PicturePtr pPicture;
+-                int xoff, yoff;
+-
+-                pPicture = GetGlyphPicture(glyph, pScreen);
+-                if (!pPicture) {
+-                    n_glyphs--;
+-                    goto next;
+-                }
+-
+-                if (!(glyphImage = image_from_pict(pPicture, FALSE, &amp;xoff, &amp;yoff)))
+-                    goto out;
+-
+-                g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
+-                                              glyph-&gt;info.x,
+-                                              glyph-&gt;info.y,
+-                                              glyphImage);
+-
+-                free_pixman_pict(pPicture, glyphImage);
+-
+-                if (!g)
+-                    goto out;
+-            }
+-
+-            pglyphs[i].x = x;
+-            pglyphs[i].y = y;
+-            pglyphs[i].glyph = g;
+-            i++;
+-
+-        next:
+-            x += glyph-&gt;info.xOff;
+-            y += glyph-&gt;info.yOff;
+-        }
+-        list++;
+-    }
+-
+-    if (!(srcImage = image_from_pict(pSrc, FALSE, &amp;srcXoff, &amp;srcYoff)))
+-        goto out;
+-
+-    if (!(dstImage = image_from_pict(pDst, TRUE, &amp;dstXoff, &amp;dstYoff)))
+-        goto out_free_src;
+-
+-    if (maskFormat) {
+-        pixman_format_code_t format;
+-        pixman_box32_t extents;
+-
+-        format = maskFormat-&gt;format | (maskFormat-&gt;depth &lt;&lt; 24);
+-
+-        pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &amp;extents);
+-
+-        pixman_composite_glyphs(op, srcImage, dstImage, format,
+-                                xSrc + srcXoff + extents.x1 - xDst, ySrc + srcYoff + extents.y1 - yDst,
+-                                extents.x1, extents.y1,
+-                                extents.x1 + dstXoff, extents.y1 + dstYoff,
+-                                extents.x2 - extents.x1,
+-                                extents.y2 - extents.y1,
+-                                glyphCache, n_glyphs, pglyphs);
+-    }
+-    else {
+-        pixman_composite_glyphs_no_mask(op, srcImage, dstImage,
+-                                        xSrc + srcXoff - xDst, ySrc + srcYoff - yDst,
+-                                        dstXoff, dstYoff,
+-                                        glyphCache, n_glyphs, pglyphs);
+-    }
+-
+-    free_pixman_pict(pDst, dstImage);
+-
+-out_free_src:
+-    free_pixman_pict(pSrc, srcImage);
+-
+-out:
+-    pixman_glyph_cache_thaw(glyphCache);
+-    if (pglyphs != stack_glyphs)
+-        free(pglyphs);
+-}
+-
+ static pixman_image_t *
+ create_solid_fill_image(PicturePtr pict)
+ {
+@@ -470,8 +324,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+         return FALSE;
+     ps = GetPictureScreen(pScreen);
+     ps-&gt;Composite = fbComposite;
+-    ps-&gt;Glyphs = fbGlyphs;
+-    ps-&gt;UnrealizeGlyph = fbUnrealizeGlyph;
++    ps-&gt;Glyphs = miGlyphs;
+     ps-&gt;CompositeRects = miCompositeRects;
+     ps-&gt;RasterizeTrapezoid = fbRasterizeTrapezoid;
+     ps-&gt;AddTraps = fbAddTraps;
+diff --git a/fb/fbpict.h b/fb/fbpict.h
+index 5cb8663..110f32d 100644
+--- a/fb/fbpict.h
++++ b/fb/fbpict.h
+@@ -65,20 +65,11 @@ fbTrapezoids(CARD8 op,
+              INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);

+ extern _X_EXPORT void
++
+ fbTriangles(CARD8 op,
+             PicturePtr pSrc,
+             PicturePtr pDst,
+             PictFormatPtr maskFormat,
+             INT16 xSrc, INT16 ySrc, int ntris, xTriangle * tris);

+-extern _X_EXPORT void
+-fbGlyphs(CARD8 op,
+-         PicturePtr pSrc,
+-         PicturePtr pDst,
+-         PictFormatPtr maskFormat,
+-         INT16 xSrc,
+-         INT16 ySrc, int nlist,
+-         GlyphListPtr list,
+-         GlyphPtr *glyphs);
+-
+ #endif                          /* _FBPICT_H_ */
+diff --git a/fb/fbscreen.c b/fb/fbscreen.c
+index 71bcc5d..55330fc 100644
+--- a/fb/fbscreen.c
++++ b/fb/fbscreen.c
+@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
+     int d;
+     DepthPtr depths = pScreen-&gt;allowedDepths;

+-    fbDestroyGlyphCache();
+     for (d = 0; d &lt; pScreen-&gt;numDepths; d++)
+         free(depths[d].vids);
+     free(depths);
+-- 
+2.6.3
+
</ins></span></pre></div>
<a id="trunkdportsx11xorgserverdevelPortfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/x11/xorg-server-devel/Portfile (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server-devel/Portfile        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server-devel/Portfile        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> name                xorg-server-devel
</span><span class="cx"> conflicts       xorg-server
</span><span class="cx"> set my_name        xorg-server
</span><del>-version                1.17.99.902
</del><ins>+version                1.18.0
</ins><span class="cx"> categories        x11 devel
</span><span class="cx"> license         X11
</span><span class="cx"> maintainers        jeremyhu openmaintainer
</span><span class="lines">@@ -16,8 +16,8 @@
</span><span class="cx"> 
</span><span class="cx"> fetch.type      git
</span><span class="cx"> git.url         git://anongit.freedesktop.org/xorg/xserver
</span><del>-#git.branch      f9a04d19aef77bf787b8d322305a6971d24a6ba1
-git.branch      xorg-server-${version}
</del><ins>+git.branch      4457fd45efef85b567d4a0ac085d252ffe49020d
+#git.branch      xorg-server-${version}
</ins><span class="cx"> 
</span><span class="cx"> use_parallel_build yes
</span><span class="cx"> 
</span><span class="lines">@@ -82,9 +82,10 @@
</span><span class="cx"> 
</span><span class="cx"> patchfiles \
</span><span class="cx">         5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch \
</span><del>-        5001-Use-old-miTrapezoids-and-miTriangles-routines.patch \
-        5002-fb-Revert-fb-changes-that-broke-XQuartz.patch \
-        5003-fb-Revert-fb-changes-that-broke-XQuartz.patch
</del><ins>+        5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch \
+        5002-Use-old-miTrapezoids-and-miTriangles-routines.patch \
+        5003-fb-Revert-fb-changes-that-broke-XQuartz.patch \
+        5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
</ins><span class="cx"> 
</span><span class="cx"> patch.pre_args -p1
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkdportsx11xorgserverdevelfiles5000sdksymsshUseCPPFLAGSnotCFLAGSpatch"></a>
<div class="modfile"><h4>Modified: trunk/dports/x11/xorg-server-devel/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server-devel/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server-devel/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><del>-From ef72dea4fd6074eff50063aa9dbf8011361674f3 Mon Sep 17 00:00:00 2001
</del><ins>+From 4b22984e7f7cdde1d50b84d3a1d977eb0b5df28a Mon Sep 17 00:00:00 2001
</ins><span class="cx"> From: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
</span><span class="cx"> Date: Fri, 13 Jan 2012 12:00:57 -0800
</span><del>-Subject: [PATCH 5000/5003] sdksyms.sh: Use CPPFLAGS, not CFLAGS
</del><ins>+Subject: [PATCH 5000/5004] sdksyms.sh: Use CPPFLAGS, not CFLAGS
</ins><span class="cx"> 
</span><span class="cx"> CFLAGS can include flags which are not useful to the preprocessor
</span><span class="cx"> or can even cause it to fail.  This fixes a build issue on darwin
</span><span class="lines">@@ -14,7 +14,7 @@
</span><span class="cx">  1 file changed, 2 insertions(+), 3 deletions(-)
</span><span class="cx"> 
</span><span class="cx"> diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
</span><del>-index c45d8c9..60a586d 100644
</del><ins>+index 64c4f74..e77981d 100644
</ins><span class="cx"> --- a/hw/xfree86/Makefile.am
</span><span class="cx"> +++ b/hw/xfree86/Makefile.am
</span><span class="cx"> @@ -48,8 +48,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
</span><span class="lines">@@ -22,8 +22,8 @@
</span><span class="cx">  nodist_Xorg_SOURCES = sdksyms.c
</span><span class="cx">  
</span><span class="cx"> -AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
</span><del>--AM_CPPFLAGS = $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
-+AM_CPPFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@ $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
</del><ins>+-AM_CPPFLAGS = $(XORG_INCS) -I$(srcdir)/parser \
++AM_CPPFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@ $(XORG_INCS) -I$(srcdir)/parser \
</ins><span class="cx">          -I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
</span><span class="cx">          -I$(srcdir)/dri -I$(srcdir)/dri2 -I$(top_srcdir)/dri3
</span><span class="cx">  
</span><span class="lines">@@ -37,5 +37,5 @@
</span><span class="cx">  SDKSYMS_DEP = sdksyms.dep
</span><span class="cx">  -include $(SDKSYMS_DEP)
</span><span class="cx"> -- 
</span><del>-2.6.2
</del><ins>+2.6.3
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkdportsx11xorgserverdevelfiles5001UseoldmiTrapezoidsandmiTrianglesroutinespatch"></a>
<div class="delfile"><h4>Deleted: trunk/dports/x11/xorg-server-devel/files/5001-Use-old-miTrapezoids-and-miTriangles-routines.patch (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server-devel/files/5001-Use-old-miTrapezoids-and-miTriangles-routines.patch        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server-devel/files/5001-Use-old-miTrapezoids-and-miTriangles-routines.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -1,289 +0,0 @@
</span><del>-From 6b6300e3fff421b698ed2726acc0d2af62575938 Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
-Date: Sat, 2 Nov 2013 11:00:23 -0700
-Subject: [PATCH 5001/5003] Use old miTrapezoids and miTriangles routines
-
-Reverts commits:
-    788ccb9a8bcf6a4fb4054c507111eec3338fb969
-    566f1931ee2916269e164e114bffaf2da1d039d1
-
-http://xquartz.macosforge.org/trac/ticket/525
-
-Signed-off-by: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
----
- fb/fbpict.c     |   2 -
- render/mipict.c |   4 +-
- render/mipict.h |  27 ++++++++++++++
- render/mitrap.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- render/mitri.c  |  61 +++++++++++++++++++++++++++++++
- 5 files changed, 201 insertions(+), 4 deletions(-)
-
-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 7ea0b66..434d890 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -508,10 +508,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
-     ps-&gt;UnrealizeGlyph = fbUnrealizeGlyph;
-     ps-&gt;CompositeRects = miCompositeRects;
-     ps-&gt;RasterizeTrapezoid = fbRasterizeTrapezoid;
--    ps-&gt;Trapezoids = fbTrapezoids;
-     ps-&gt;AddTraps = fbAddTraps;
-     ps-&gt;AddTriangles = fbAddTriangles;
--    ps-&gt;Triangles = fbTriangles;

-     return TRUE;
- }
-diff --git a/render/mipict.c b/render/mipict.c
-index 4b85512..a39eb2c 100644
---- a/render/mipict.c
-+++ b/render/mipict.c
-@@ -575,8 +575,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
-     ps-&gt;Composite = 0;          /* requires DDX support */
-     ps-&gt;Glyphs = miGlyphs;
-     ps-&gt;CompositeRects = miCompositeRects;
--    ps-&gt;Trapezoids = 0;
--    ps-&gt;Triangles = 0;
-+    ps-&gt;Trapezoids = miTrapezoids;
-+    ps-&gt;Triangles = miTriangles;

-     ps-&gt;RasterizeTrapezoid = 0; /* requires DDX support */
-     ps-&gt;AddTraps = 0;           /* requires DDX support */
-diff --git a/render/mipict.h b/render/mipict.h
-index 3241be4..8ee7a8a 100644
---- a/render/mipict.h
-+++ b/render/mipict.h
-@@ -102,9 +102,36 @@ miCompositeRects(CARD8 op,
-                  xRenderColor * color, int nRect, xRectangle *rects);

- extern _X_EXPORT void
-+miTriangles (CARD8            op,
-+             PicturePtr            pSrc,
-+             PicturePtr            pDst,
-+             PictFormatPtr  maskFormat,
-+             INT16            xSrc,
-+             INT16            ySrc,
-+             int            ntri,
-+             xTriangle            *tris);
-+
-+extern _X_EXPORT PicturePtr
-+miCreateAlphaPicture (ScreenPtr            pScreen, 
-+                     PicturePtr    pDst,
-+                     PictFormatPtr pPictFormat,
-+                     CARD16        width,
-+                     CARD16        height);
-+
-+extern _X_EXPORT void
-  miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box);

- extern _X_EXPORT void
-+miTrapezoids (CARD8        op,
-+             PicturePtr    pSrc,
-+             PicturePtr    pDst,
-+             PictFormatPtr maskFormat,
-+             INT16         xSrc,
-+             INT16         ySrc,
-+             int           ntrap,
-+             xTrapezoid    *traps);
-+
-+extern _X_EXPORT void
-  miPointFixedBounds(int npoint, xPointFixed * points, BoxPtr bounds);

- extern _X_EXPORT void
-diff --git a/render/mitrap.c b/render/mitrap.c
-index 17b6dcd..71c1857 100644
---- a/render/mitrap.c
-+++ b/render/mitrap.c
-@@ -34,6 +34,55 @@
- #include &quot;picturestr.h&quot;
- #include &quot;mipict.h&quot;

-+PicturePtr
-+miCreateAlphaPicture (ScreenPtr            pScreen, 
-+                      PicturePtr    pDst,
-+                      PictFormatPtr pPictFormat,
-+                      CARD16            width,
-+                      CARD16            height)
-+{
-+    PixmapPtr            pPixmap;
-+    PicturePtr            pPicture;
-+    GCPtr            pGC;
-+    int                    error;
-+    xRectangle            rect;
-+
-+    if (width &gt; 32767 || height &gt; 32767)
-+        return 0;
-+
-+    if (!pPictFormat)
-+    {
-+        if (pDst-&gt;polyEdge == PolyEdgeSharp)
-+            pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
-+        else
-+            pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
-+        if (!pPictFormat)
-+            return 0;
-+    }
-+
-+    pPixmap = (*pScreen-&gt;CreatePixmap) (pScreen, width, height, 
-+                                        pPictFormat-&gt;depth, 0);
-+    if (!pPixmap)
-+        return 0;
-+    pGC = GetScratchGC (pPixmap-&gt;drawable.depth, pScreen);
-+    if (!pGC)
-+    {
-+        (*pScreen-&gt;DestroyPixmap) (pPixmap);
-+        return 0;
-+    }
-+    ValidateGC (&amp;pPixmap-&gt;drawable, pGC);
-+    rect.x = 0;
-+    rect.y = 0;
-+    rect.width = width;
-+    rect.height = height;
-+    (*pGC-&gt;ops-&gt;PolyFillRect)(&amp;pPixmap-&gt;drawable, pGC, 1, &amp;rect);
-+    FreeScratchGC (pGC);
-+    pPicture = CreatePicture (0, &amp;pPixmap-&gt;drawable, pPictFormat,
-+                              0, 0, serverClient, &amp;error);
-+    (*pScreen-&gt;DestroyPixmap) (pPixmap);
-+    return pPicture;
-+}
-+
- static xFixed
- miLineFixedX(xLineFixed * l, xFixed y, Bool ceil)
- {
-@@ -79,3 +128,65 @@ miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box)
-             box-&gt;x2 = x2;
-     }
- }
-+
-+
-+void
-+miTrapezoids (CARD8        op,
-+             PicturePtr    pSrc,
-+             PicturePtr    pDst,
-+             PictFormatPtr maskFormat,
-+             INT16         xSrc,
-+             INT16         ySrc,
-+             int           ntrap,
-+             xTrapezoid    *traps)
-+{
-+    ScreenPtr          pScreen = pDst-&gt;pDrawable-&gt;pScreen;
-+    PictureScreenPtr    ps = GetPictureScreen(pScreen);
-+
-+    /*
-+     * Check for solid alpha add
-+     */
-+    if (op == PictOpAdd &amp;&amp; miIsSolidAlpha (pSrc))
-+    {
-+       for (; ntrap; ntrap--, traps++)
-+           (*ps-&gt;RasterizeTrapezoid) (pDst, traps, 0, 0);
-+    } 
-+    else if (maskFormat)
-+    {
-+       PicturePtr      pPicture;
-+       BoxRec          bounds;
-+       INT16           xDst, yDst;
-+       INT16           xRel, yRel;
-+       
-+       xDst = traps[0].left.p1.x &gt;&gt; 16;
-+       yDst = traps[0].left.p1.y &gt;&gt; 16;
-+
-+       miTrapezoidBounds (ntrap, traps, &amp;bounds);
-+       if (bounds.y1 &gt;= bounds.y2 || bounds.x1 &gt;= bounds.x2)
-+           return;
-+       pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
-+                                        bounds.x2 - bounds.x1,
-+                                        bounds.y2 - bounds.y1);
-+       if (!pPicture)
-+           return;
-+       for (; ntrap; ntrap--, traps++)
-+           (*ps-&gt;RasterizeTrapezoid) (pPicture, traps, 
-+                                      -bounds.x1, -bounds.y1);
-+       xRel = bounds.x1 + xSrc - xDst;
-+       yRel = bounds.y1 + ySrc - yDst;
-+       CompositePicture (op, pSrc, pPicture, pDst,
-+                         xRel, yRel, 0, 0, bounds.x1, bounds.y1,
-+                         bounds.x2 - bounds.x1,
-+                         bounds.y2 - bounds.y1);
-+       FreePicture (pPicture, 0);
-+    }
-+    else
-+    {
-+       if (pDst-&gt;polyEdge == PolyEdgeSharp)
-+           maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
-+       else
-+           maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
-+       for (; ntrap; ntrap--, traps++)
-+           miTrapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps);
-+    }
-+}
-diff --git a/render/mitri.c b/render/mitri.c
-index 922f22a..bdca9ca 100644
---- a/render/mitri.c
-+++ b/render/mitri.c
-@@ -65,3 +65,64 @@ miTriangleBounds(int ntri, xTriangle * tris, BoxPtr bounds)
- {
-     miPointFixedBounds(ntri * 3, (xPointFixed *) tris, bounds);
- }
-+
-+
-+void
-+miTriangles (CARD8            op,
-+             PicturePtr            pSrc,
-+             PicturePtr            pDst,
-+             PictFormatPtr  maskFormat,
-+             INT16            xSrc,
-+             INT16            ySrc,
-+             int            ntri,
-+             xTriangle            *tris)
-+{
-+    ScreenPtr                pScreen = pDst-&gt;pDrawable-&gt;pScreen;
-+    PictureScreenPtr    ps = GetPictureScreen(pScreen);
-+    
-+    /*
-+     * Check for solid alpha add
-+     */
-+    if (op == PictOpAdd &amp;&amp; miIsSolidAlpha (pSrc))
-+    {
-+        (*ps-&gt;AddTriangles) (pDst, 0, 0, ntri, tris);
-+    }
-+    else if (maskFormat)
-+    {
-+        BoxRec                bounds;
-+        PicturePtr        pPicture;
-+        INT16                xDst, yDst;
-+        INT16                xRel, yRel;
-+        
-+        xDst = tris[0].p1.x &gt;&gt; 16;
-+        yDst = tris[0].p1.y &gt;&gt; 16;
-+
-+        miTriangleBounds (ntri, tris, &amp;bounds);
-+        if (bounds.x2 &lt;= bounds.x1 || bounds.y2 &lt;= bounds.y1)
-+            return;
-+        pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
-+                                         bounds.x2 - bounds.x1,
-+                                         bounds.y2 - bounds.y1);
-+        if (!pPicture)
-+            return;
-+        (*ps-&gt;AddTriangles) (pPicture, -bounds.x1, -bounds.y1, ntri, tris);
-+        
-+        xRel = bounds.x1 + xSrc - xDst;
-+        yRel = bounds.y1 + ySrc - yDst;
-+        CompositePicture (op, pSrc, pPicture, pDst,
-+                          xRel, yRel, 0, 0, bounds.x1, bounds.y1,
-+                          bounds.x2 - bounds.x1, bounds.y2 - bounds.y1);
-+        FreePicture (pPicture, 0);
-+    }
-+    else
-+    {
-+        if (pDst-&gt;polyEdge == PolyEdgeSharp)
-+            maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
-+        else
-+            maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
-+        
-+        for (; ntri; ntri--, tris++)
-+            miTriangles (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, tris);
-+    }
-+}
-+
--- 
-2.6.2
-
</del></span></pre></div>
<a id="trunkdportsx11xorgserverdevelfiles5001WorkaroundtheGCclippingprobleminmiPaintWindowpatch"></a>
<div class="addfile"><h4>Added: trunk/dports/x11/xorg-server-devel/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch (0 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server-devel/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch                                (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -0,0 +1,111 @@
</span><ins>+From b7277926822e54c1d2413c4fe5bc7e0fd0d8fd90 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
+Date: Fri, 30 Apr 2010 13:08:25 -0700
+Subject: [PATCH 5001/5004] Workaround the GC clipping problem in miPaintWindow
+ and add some debugging output.
+
+http://xquartz.macosforge.org/trac/ticket/290
+http://trac.macports.org/ticket/49465
+
+Signed-off-by: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
+---
+ mi/miexpose.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 69 insertions(+)
+
+diff --git a/mi/miexpose.c b/mi/miexpose.c
+index 148d1a6..1fa3c48 100644
+--- a/mi/miexpose.c
++++ b/mi/miexpose.c
+@@ -428,6 +428,19 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+     Bool solid = TRUE;
+     DrawablePtr drawable = &amp;pWin-&gt;drawable;

++#ifdef XQUARTZ_CLIP_DEBUG
++    ErrorF(&quot;START %d BS %d (pR = %ld)\n&quot;, what, pWin-&gt;backgroundState, ParentRelative);
++    ErrorF(&quot;      Rgn: %d %d %d %d\n&quot;, prgn-&gt;extents.x1, prgn-&gt;extents.y1,
++                                       prgn-&gt;extents.x2 - prgn-&gt;extents.x1,
++                                       prgn-&gt;extents.y2 - prgn-&gt;extents.y1);
++    ErrorF(&quot;      Win: %d %d (%d %d) %d %d\n&quot;, pWin-&gt;origin.x, pWin-&gt;origin.y,
++                                               pWin-&gt;winSize.extents.x1, pWin-&gt;winSize.extents.y1,
++                                               pWin-&gt;winSize.extents.x2 - pWin-&gt;winSize.extents.x1,
++                                               pWin-&gt;winSize.extents.y2 - pWin-&gt;winSize.extents.y1);
++    ErrorF(&quot;     Draw: %d %d %d %d\n&quot;, pWin-&gt;drawable.x, pWin-&gt;drawable.y,
++                                       pWin-&gt;drawable.width, pWin-&gt;drawable.height);
++#endif
++
+     if (what == PW_BACKGROUND) {
+         while (pWin-&gt;backgroundState == ParentRelative)
+             pWin = pWin-&gt;parent;
+@@ -462,6 +475,11 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+         pixmap = (*pScreen-&gt;GetWindowPixmap) ((WindowPtr) drawable);
+         drawable = &amp;pixmap-&gt;drawable;

++#ifdef XQUARTZ_CLIP_DEBUG
++        ErrorF(&quot;     Draw: %d %d %d %d\n&quot;,
++               drawable-&gt;x, drawable-&gt;y, drawable-&gt;width, drawable-&gt;height);    
++#endif
++        
+         while (pWin-&gt;backgroundState == ParentRelative)
+             pWin = pWin-&gt;parent;

+@@ -528,6 +546,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+     ChangeGC(NullClient, pGC, gcmask, gcval);
+     ValidateGC(drawable, pGC);

++#ifdef XQUARTZ_CLIP_DEBUG
++    ErrorF(&quot;       GC: %d %d %d %d\n&quot;,
++           pGC-&gt;pCompositeClip-&gt;extents.x1, pGC-&gt;pCompositeClip-&gt;extents.y1,
++           pGC-&gt;pCompositeClip-&gt;extents.x2 - pGC-&gt;pCompositeClip-&gt;extents.x1,
++           pGC-&gt;pCompositeClip-&gt;extents.y2 - pGC-&gt;pCompositeClip-&gt;extents.y1);
++#endif
++    
++#ifdef XQUARTZ
++    /* Looks like our clipping isn't set right for some reason:
++     * http://xquartz.macosforge.org/trac/ticket/290
++     */
++    if(what == PW_BORDER) {
++
++#if 0
++        if(solid) {
++#if 1
++            fbFillRegionSolid(&amp;pWin-&gt;drawable,
++                              prgn,
++                              0,
++                              fbReplicatePixel(fill.pixel,
++                                               pWin-&gt;drawable.bitsPerPixel));
++#else
++            fbFillRegionSolid(drawable,
++                              prgn,
++                              0,
++                              fbReplicatePixel(fill.pixel,
++                                               drawable-&gt;bitsPerPixel));
++#endif
++            return;
++        }
++#endif
++    
++        pGC-&gt;pCompositeClip-&gt;extents.x1 += prgn-&gt;extents.x1;
++        pGC-&gt;pCompositeClip-&gt;extents.y1 += prgn-&gt;extents.y1;
++        pGC-&gt;pCompositeClip-&gt;extents.x2 += prgn-&gt;extents.x1;
++        pGC-&gt;pCompositeClip-&gt;extents.y2 += prgn-&gt;extents.y1;
++        
++        if(pGC-&gt;pCompositeClip-&gt;extents.x2 &gt; drawable-&gt;pScreen-&gt;width)
++            pGC-&gt;pCompositeClip-&gt;extents.x2 = drawable-&gt;pScreen-&gt;width;
++        if(pGC-&gt;pCompositeClip-&gt;extents.y2 &gt; drawable-&gt;pScreen-&gt;height)
++            pGC-&gt;pCompositeClip-&gt;extents.y2 = drawable-&gt;pScreen-&gt;height;
++    }
++#endif
++
++#ifdef XQUARTZ_CLIP_DEBUG
++    ErrorF(&quot;       GC: %d %d %d %d\n&quot;,
++           pGC-&gt;pCompositeClip-&gt;extents.x1, pGC-&gt;pCompositeClip-&gt;extents.y1,
++           pGC-&gt;pCompositeClip-&gt;extents.x2 - pGC-&gt;pCompositeClip-&gt;extents.x1,
++           pGC-&gt;pCompositeClip-&gt;extents.y2 - pGC-&gt;pCompositeClip-&gt;extents.y1);    
++#endif
++
+     numRects = RegionNumRects(prgn);
+     pbox = RegionRects(prgn);
+     for (i = numRects; --i &gt;= 0; pbox++, prect++) {
+-- 
+2.6.3
+
</ins></span></pre></div>
<a id="trunkdportsx11xorgserverdevelfiles5002UseoldmiTrapezoidsandmiTrianglesroutinespatch"></a>
<div class="addfile"><h4>Added: trunk/dports/x11/xorg-server-devel/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch (0 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server-devel/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch                                (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -0,0 +1,289 @@
</span><ins>+From c646cf3b17511b0f9eba39a735fb256715b0961a Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
+Date: Sat, 2 Nov 2013 11:00:23 -0700
+Subject: [PATCH 5002/5004] Use old miTrapezoids and miTriangles routines
+
+Reverts commits:
+    788ccb9a8bcf6a4fb4054c507111eec3338fb969
+    566f1931ee2916269e164e114bffaf2da1d039d1
+
+http://xquartz.macosforge.org/trac/ticket/525
+
+Signed-off-by: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
+---
+ fb/fbpict.c     |   2 -
+ render/mipict.c |   4 +-
+ render/mipict.h |  27 ++++++++++++++
+ render/mitrap.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ render/mitri.c  |  61 +++++++++++++++++++++++++++++++
+ 5 files changed, 201 insertions(+), 4 deletions(-)
+
+diff --git a/fb/fbpict.c b/fb/fbpict.c
+index 7ea0b66..434d890 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -508,10 +508,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+     ps-&gt;UnrealizeGlyph = fbUnrealizeGlyph;
+     ps-&gt;CompositeRects = miCompositeRects;
+     ps-&gt;RasterizeTrapezoid = fbRasterizeTrapezoid;
+-    ps-&gt;Trapezoids = fbTrapezoids;
+     ps-&gt;AddTraps = fbAddTraps;
+     ps-&gt;AddTriangles = fbAddTriangles;
+-    ps-&gt;Triangles = fbTriangles;

+     return TRUE;
+ }
+diff --git a/render/mipict.c b/render/mipict.c
+index 4b85512..a39eb2c 100644
+--- a/render/mipict.c
++++ b/render/mipict.c
+@@ -575,8 +575,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+     ps-&gt;Composite = 0;          /* requires DDX support */
+     ps-&gt;Glyphs = miGlyphs;
+     ps-&gt;CompositeRects = miCompositeRects;
+-    ps-&gt;Trapezoids = 0;
+-    ps-&gt;Triangles = 0;
++    ps-&gt;Trapezoids = miTrapezoids;
++    ps-&gt;Triangles = miTriangles;

+     ps-&gt;RasterizeTrapezoid = 0; /* requires DDX support */
+     ps-&gt;AddTraps = 0;           /* requires DDX support */
+diff --git a/render/mipict.h b/render/mipict.h
+index 3241be4..8ee7a8a 100644
+--- a/render/mipict.h
++++ b/render/mipict.h
+@@ -102,9 +102,36 @@ miCompositeRects(CARD8 op,
+                  xRenderColor * color, int nRect, xRectangle *rects);

+ extern _X_EXPORT void
++miTriangles (CARD8            op,
++             PicturePtr            pSrc,
++             PicturePtr            pDst,
++             PictFormatPtr  maskFormat,
++             INT16            xSrc,
++             INT16            ySrc,
++             int            ntri,
++             xTriangle            *tris);
++
++extern _X_EXPORT PicturePtr
++miCreateAlphaPicture (ScreenPtr            pScreen, 
++                     PicturePtr    pDst,
++                     PictFormatPtr pPictFormat,
++                     CARD16        width,
++                     CARD16        height);
++
++extern _X_EXPORT void
+  miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box);

+ extern _X_EXPORT void
++miTrapezoids (CARD8        op,
++             PicturePtr    pSrc,
++             PicturePtr    pDst,
++             PictFormatPtr maskFormat,
++             INT16         xSrc,
++             INT16         ySrc,
++             int           ntrap,
++             xTrapezoid    *traps);
++
++extern _X_EXPORT void
+  miPointFixedBounds(int npoint, xPointFixed * points, BoxPtr bounds);

+ extern _X_EXPORT void
+diff --git a/render/mitrap.c b/render/mitrap.c
+index 17b6dcd..71c1857 100644
+--- a/render/mitrap.c
++++ b/render/mitrap.c
+@@ -34,6 +34,55 @@
+ #include &quot;picturestr.h&quot;
+ #include &quot;mipict.h&quot;

++PicturePtr
++miCreateAlphaPicture (ScreenPtr            pScreen, 
++                      PicturePtr    pDst,
++                      PictFormatPtr pPictFormat,
++                      CARD16            width,
++                      CARD16            height)
++{
++    PixmapPtr            pPixmap;
++    PicturePtr            pPicture;
++    GCPtr            pGC;
++    int                    error;
++    xRectangle            rect;
++
++    if (width &gt; 32767 || height &gt; 32767)
++        return 0;
++
++    if (!pPictFormat)
++    {
++        if (pDst-&gt;polyEdge == PolyEdgeSharp)
++            pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++        else
++            pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++        if (!pPictFormat)
++            return 0;
++    }
++
++    pPixmap = (*pScreen-&gt;CreatePixmap) (pScreen, width, height, 
++                                        pPictFormat-&gt;depth, 0);
++    if (!pPixmap)
++        return 0;
++    pGC = GetScratchGC (pPixmap-&gt;drawable.depth, pScreen);
++    if (!pGC)
++    {
++        (*pScreen-&gt;DestroyPixmap) (pPixmap);
++        return 0;
++    }
++    ValidateGC (&amp;pPixmap-&gt;drawable, pGC);
++    rect.x = 0;
++    rect.y = 0;
++    rect.width = width;
++    rect.height = height;
++    (*pGC-&gt;ops-&gt;PolyFillRect)(&amp;pPixmap-&gt;drawable, pGC, 1, &amp;rect);
++    FreeScratchGC (pGC);
++    pPicture = CreatePicture (0, &amp;pPixmap-&gt;drawable, pPictFormat,
++                              0, 0, serverClient, &amp;error);
++    (*pScreen-&gt;DestroyPixmap) (pPixmap);
++    return pPicture;
++}
++
+ static xFixed
+ miLineFixedX(xLineFixed * l, xFixed y, Bool ceil)
+ {
+@@ -79,3 +128,65 @@ miTrapezoidBounds(int ntrap, xTrapezoid * traps, BoxPtr box)
+             box-&gt;x2 = x2;
+     }
+ }
++
++
++void
++miTrapezoids (CARD8        op,
++             PicturePtr    pSrc,
++             PicturePtr    pDst,
++             PictFormatPtr maskFormat,
++             INT16         xSrc,
++             INT16         ySrc,
++             int           ntrap,
++             xTrapezoid    *traps)
++{
++    ScreenPtr          pScreen = pDst-&gt;pDrawable-&gt;pScreen;
++    PictureScreenPtr    ps = GetPictureScreen(pScreen);
++
++    /*
++     * Check for solid alpha add
++     */
++    if (op == PictOpAdd &amp;&amp; miIsSolidAlpha (pSrc))
++    {
++       for (; ntrap; ntrap--, traps++)
++           (*ps-&gt;RasterizeTrapezoid) (pDst, traps, 0, 0);
++    } 
++    else if (maskFormat)
++    {
++       PicturePtr      pPicture;
++       BoxRec          bounds;
++       INT16           xDst, yDst;
++       INT16           xRel, yRel;
++       
++       xDst = traps[0].left.p1.x &gt;&gt; 16;
++       yDst = traps[0].left.p1.y &gt;&gt; 16;
++
++       miTrapezoidBounds (ntrap, traps, &amp;bounds);
++       if (bounds.y1 &gt;= bounds.y2 || bounds.x1 &gt;= bounds.x2)
++           return;
++       pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
++                                        bounds.x2 - bounds.x1,
++                                        bounds.y2 - bounds.y1);
++       if (!pPicture)
++           return;
++       for (; ntrap; ntrap--, traps++)
++           (*ps-&gt;RasterizeTrapezoid) (pPicture, traps, 
++                                      -bounds.x1, -bounds.y1);
++       xRel = bounds.x1 + xSrc - xDst;
++       yRel = bounds.y1 + ySrc - yDst;
++       CompositePicture (op, pSrc, pPicture, pDst,
++                         xRel, yRel, 0, 0, bounds.x1, bounds.y1,
++                         bounds.x2 - bounds.x1,
++                         bounds.y2 - bounds.y1);
++       FreePicture (pPicture, 0);
++    }
++    else
++    {
++       if (pDst-&gt;polyEdge == PolyEdgeSharp)
++           maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++       else
++           maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++       for (; ntrap; ntrap--, traps++)
++           miTrapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps);
++    }
++}
+diff --git a/render/mitri.c b/render/mitri.c
+index 922f22a..bdca9ca 100644
+--- a/render/mitri.c
++++ b/render/mitri.c
+@@ -65,3 +65,64 @@ miTriangleBounds(int ntri, xTriangle * tris, BoxPtr bounds)
+ {
+     miPointFixedBounds(ntri * 3, (xPointFixed *) tris, bounds);
+ }
++
++
++void
++miTriangles (CARD8            op,
++             PicturePtr            pSrc,
++             PicturePtr            pDst,
++             PictFormatPtr  maskFormat,
++             INT16            xSrc,
++             INT16            ySrc,
++             int            ntri,
++             xTriangle            *tris)
++{
++    ScreenPtr                pScreen = pDst-&gt;pDrawable-&gt;pScreen;
++    PictureScreenPtr    ps = GetPictureScreen(pScreen);
++    
++    /*
++     * Check for solid alpha add
++     */
++    if (op == PictOpAdd &amp;&amp; miIsSolidAlpha (pSrc))
++    {
++        (*ps-&gt;AddTriangles) (pDst, 0, 0, ntri, tris);
++    }
++    else if (maskFormat)
++    {
++        BoxRec                bounds;
++        PicturePtr        pPicture;
++        INT16                xDst, yDst;
++        INT16                xRel, yRel;
++        
++        xDst = tris[0].p1.x &gt;&gt; 16;
++        yDst = tris[0].p1.y &gt;&gt; 16;
++
++        miTriangleBounds (ntri, tris, &amp;bounds);
++        if (bounds.x2 &lt;= bounds.x1 || bounds.y2 &lt;= bounds.y1)
++            return;
++        pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
++                                         bounds.x2 - bounds.x1,
++                                         bounds.y2 - bounds.y1);
++        if (!pPicture)
++            return;
++        (*ps-&gt;AddTriangles) (pPicture, -bounds.x1, -bounds.y1, ntri, tris);
++        
++        xRel = bounds.x1 + xSrc - xDst;
++        yRel = bounds.y1 + ySrc - yDst;
++        CompositePicture (op, pSrc, pPicture, pDst,
++                          xRel, yRel, 0, 0, bounds.x1, bounds.y1,
++                          bounds.x2 - bounds.x1, bounds.y2 - bounds.y1);
++        FreePicture (pPicture, 0);
++    }
++    else
++    {
++        if (pDst-&gt;polyEdge == PolyEdgeSharp)
++            maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++        else
++            maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++        
++        for (; ntri; ntri--, tris++)
++            miTriangles (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, tris);
++    }
++}
++
+-- 
+2.6.3
+
</ins></span></pre></div>
<a id="trunkdportsx11xorgserverdevelfiles5002fbRevertfbchangesthatbrokeXQuartzpatch"></a>
<div class="delfile"><h4>Deleted: trunk/dports/x11/xorg-server-devel/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server-devel/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server-devel/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -1,320 +0,0 @@
</span><del>-From 621d8bbb8681852a3de6d5b9b46c0565f6bec09d Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
-Date: Fri, 12 Feb 2010 19:48:52 -0800
-Subject: [PATCH 5002/5003] fb: Revert fb changes that broke XQuartz
-
-http://bugs.freedesktop.org/show_bug.cgi?id=26124
-
-Revert &quot;Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5.&quot;
-Revert &quot;fb: Adjust transform or composite coordinates for pixman operations&quot;
-
-http://bugs.freedesktop.org/26124
-
-This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
-This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
-
-Signed-off-by: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
----
- fb/fb.h     |  3 +--
- fb/fbpict.c | 82 ++++++++++++++++++-------------------------------------------
- fb/fbtrap.c | 43 ++++++++++++++------------------
- 3 files changed, 43 insertions(+), 85 deletions(-)
-
-diff --git a/fb/fb.h b/fb/fb.h
-index c687aa7..256a1ee 100644
---- a/fb/fb.h
-+++ b/fb/fb.h
-@@ -1321,8 +1321,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
-                   RegionPtr pRegion, FbBits and, FbBits xor);

- extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict,
--                                                 Bool has_clip,
--                                                 int *xoff, int *yoff);
-+                                                 Bool has_clip);

- extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *);

-diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 434d890..be8274b 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -46,23 +46,18 @@ fbComposite(CARD8 op,
-             INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
- {
-     pixman_image_t *src, *mask, *dest;
--    int src_xoff, src_yoff;
--    int msk_xoff, msk_yoff;
--    int dst_xoff, dst_yoff;
--
-     miCompositeSourceValidate(pSrc);
-     if (pMask)
-         miCompositeSourceValidate(pMask);

--    src = image_from_pict(pSrc, FALSE, &amp;src_xoff, &amp;src_yoff);
--    mask = image_from_pict(pMask, FALSE, &amp;msk_xoff, &amp;msk_yoff);
--    dest = image_from_pict(pDst, TRUE, &amp;dst_xoff, &amp;dst_yoff);
-+    src = image_from_pict(pSrc, TRUE);
-+    mask = image_from_pict(pMask, TRUE);
-+    dest = image_from_pict(pDst, TRUE);

-     if (src &amp;&amp; dest &amp;&amp; !(pMask &amp;&amp; !mask)) {
-         pixman_image_composite(op, src, mask, dest,
--                               xSrc + src_xoff, ySrc + src_yoff,
--                               xMask + msk_xoff, yMask + msk_yoff,
--                               xDst + dst_xoff, yDst + dst_yoff, width, height);
-+                               xSrc, ySrc, xMask, yMask, xDst, yDst,
-+                               width, height);
-     }

-     free_pixman_pict(pSrc, src);
-@@ -289,20 +284,22 @@ create_conical_gradient_image(PictGradient * gradient)
- }

- static pixman_image_t *
--create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-+create_bits_picture(PicturePtr pict, Bool has_clip)
- {
--    PixmapPtr pixmap;
-     FbBits *bits;
-     FbStride stride;
--    int bpp;
-+    int bpp, xoff, yoff;
-     pixman_image_t *image;

--    fbGetDrawablePixmap(pict-&gt;pDrawable, pixmap, *xoff, *yoff);
--    fbGetPixmapBitsData(pixmap, bits, stride, bpp);
-+    fbGetDrawable (pict-&gt;pDrawable, bits, stride, bpp, xoff, yoff);
-+
-+    bits = (FbBits*)((CARD8*)bits +
-+                     (pict-&gt;pDrawable-&gt;y + yoff) * stride * sizeof(FbBits) +
-+                     (pict-&gt;pDrawable-&gt;x + xoff) * (bpp / 8));

-     image = pixman_image_create_bits((pixman_format_code_t) pict-&gt;format,
--                                     pixmap-&gt;drawable.width,
--                                     pixmap-&gt;drawable.height, (uint32_t *) bits,
-+                                     pict-&gt;pDrawable-&gt;width,
-+                                     pict-&gt;pDrawable-&gt;height, (uint32_t *) bits,
-                                      stride * sizeof(FbStride));

-     if (!image)
-@@ -321,28 +318,21 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-         if (pict-&gt;clientClip)
-             pixman_image_set_has_client_clip(image, TRUE);

--        if (*xoff || *yoff)
--            pixman_region_translate(pict-&gt;pCompositeClip, *xoff, *yoff);
-+        pixman_region_translate (pict-&gt;pCompositeClip, - pict-&gt;pDrawable-&gt;x, - pict-&gt;pDrawable-&gt;y);

-         pixman_image_set_clip_region(image, pict-&gt;pCompositeClip);

--        if (*xoff || *yoff)
--            pixman_region_translate(pict-&gt;pCompositeClip, -*xoff, -*yoff);
-+        pixman_region_translate (pict-&gt;pCompositeClip, pict-&gt;pDrawable-&gt;x, pict-&gt;pDrawable-&gt;y);
-     }

-     /* Indexed table */
-     if (pict-&gt;pFormat-&gt;index.devPrivate)
-         pixman_image_set_indexed(image, pict-&gt;pFormat-&gt;index.devPrivate);

--    /* Add in drawable origin to position within the image */
--    *xoff += pict-&gt;pDrawable-&gt;x;
--    *yoff += pict-&gt;pDrawable-&gt;y;
--
-     return image;
- }

- static pixman_image_t *image_from_pict_internal(PicturePtr pict, Bool has_clip,
--                                                int *xoff, int *yoff,
-                                                 Bool is_alpha_map);

- static void image_destroy(pixman_image_t *image, void *data)
-@@ -351,32 +341,13 @@ static void image_destroy(pixman_image_t *image, void *data)
- }

- static void
--set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
--                     int *xoff, int *yoff, Bool is_alpha_map)
-+set_image_properties(pixman_image_t * image, PicturePtr pict, Bool is_alpha_map)
- {
-     pixman_repeat_t repeat;
-     pixman_filter_t filter;

-     if (pict-&gt;transform) {
--        /* For source images, adjust the transform to account
--         * for the drawable offset within the pixman image,
--         * then set the offset to 0 as it will be used
--         * to compute positions within the transformed image.
--         */
--        if (!has_clip) {
--            struct pixman_transform adjusted;
--
--            adjusted = *pict-&gt;transform;
--            pixman_transform_translate(&amp;adjusted,
--                                       NULL,
--                                       pixman_int_to_fixed(*xoff),
--                                       pixman_int_to_fixed(*yoff));
--            pixman_image_set_transform(image, &amp;adjusted);
--            *xoff = 0;
--            *yoff = 0;
--        }
--        else
--            pixman_image_set_transform(image, pict-&gt;transform);
-+        pixman_image_set_transform(image, pict-&gt;transform);
-     }

-     switch (pict-&gt;repeatType) {
-@@ -404,10 +375,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
-      * as the alpha map for this operation
-      */
-     if (pict-&gt;alphaMap &amp;&amp; !is_alpha_map) {
--        int alpha_xoff, alpha_yoff;
-         pixman_image_t *alpha_map =
--            image_from_pict_internal(pict-&gt;alphaMap, FALSE, &amp;alpha_xoff,
--                                     &amp;alpha_yoff, TRUE);
-+            image_from_pict_internal(pict-&gt;alphaMap, TRUE, TRUE);

-         pixman_image_set_alpha_map(image, alpha_map, pict-&gt;alphaOrigin.x,
-                                    pict-&gt;alphaOrigin.y);
-@@ -445,8 +414,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
- }

- static pixman_image_t *
--image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
--                         Bool is_alpha_map)
-+image_from_pict_internal(PicturePtr pict, Bool has_clip, Bool is_alpha_map)
- {
-     pixman_image_t *image = NULL;

-@@ -454,7 +422,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
-         return NULL;

-     if (pict-&gt;pDrawable) {
--        image = create_bits_picture(pict, has_clip, xoff, yoff);
-+        image = create_bits_picture(pict, has_clip);
-     }
-     else if (pict-&gt;pSourcePict) {
-         SourcePict *sp = pict-&gt;pSourcePict;
-@@ -472,19 +440,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
-             else if (sp-&gt;type == SourcePictTypeConical)
-                 image = create_conical_gradient_image(gradient);
-         }
--        *xoff = *yoff = 0;
-     }

-     if (image)
--        set_image_properties(image, pict, has_clip, xoff, yoff, is_alpha_map);
--
-+        set_image_properties (image, pict, is_alpha_map);
-     return image;
- }

- pixman_image_t *
--image_from_pict(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-+image_from_pict (PicturePtr pict, Bool has_clip)
- {
--    return image_from_pict_internal(pict, has_clip, xoff, yoff, FALSE);
-+    return image_from_pict_internal (pict, has_clip, FALSE);
- }

- void
-diff --git a/fb/fbtrap.c b/fb/fbtrap.c
-index bf82f8f..0145ce9 100644
---- a/fb/fbtrap.c
-+++ b/fb/fbtrap.c
-@@ -36,13 +36,12 @@ fbAddTraps(PicturePtr pPicture,
-            INT16 x_off, INT16 y_off, int ntrap, xTrap * traps)
- {
-     pixman_image_t *image;
--    int dst_xoff, dst_yoff;

--    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
--        return;
--
--    pixman_add_traps(image, x_off + dst_xoff, y_off + dst_yoff,
--                     ntrap, (pixman_trap_t *) traps);
-+    if (!(image = image_from_pict (pPicture, FALSE)))
-+        return;
-+    
-+    pixman_add_traps(image, x_off, y_off,
-+                     ntrap, (pixman_trap_t *)traps);

-     free_pixman_pict(pPicture, image);
- }
-@@ -52,13 +51,12 @@ fbRasterizeTrapezoid(PicturePtr pPicture,
-                      xTrapezoid * trap, int x_off, int y_off)
- {
-     pixman_image_t *image;
--    int dst_xoff, dst_yoff;

--    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
-+    if (!(image = image_from_pict (pPicture, FALSE)))
-         return;

--    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *) trap,
--                               x_off + dst_xoff, y_off + dst_yoff);
-+    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *)trap,
-+                               x_off, y_off);

-     free_pixman_pict(pPicture, image);
- }
-@@ -68,14 +66,12 @@ fbAddTriangles(PicturePtr pPicture,
-                INT16 x_off, INT16 y_off, int ntri, xTriangle * tris)
- {
-     pixman_image_t *image;
--    int dst_xoff, dst_yoff;

--    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
-+    if (!(image = image_from_pict (pPicture, FALSE)))
-         return;
--
--    pixman_add_triangles(image,
--                         dst_xoff + x_off, dst_yoff + y_off,
--                         ntri, (pixman_triangle_t *) tris);
-+    
-+    pixman_add_triangles(image, x_off, y_off, ntri,
-+                         (pixman_triangle_t *)tris);

-     free_pixman_pict(pPicture, image);
- }
-@@ -98,13 +94,11 @@ fbShapes(CompositeShapesFunc composite,
-          int16_t ySrc, int nshapes, int shape_size, const uint8_t * shapes)
- {
-     pixman_image_t *src, *dst;
--    int src_xoff, src_yoff;
--    int dst_xoff, dst_yoff;

-     miCompositeSourceValidate(pSrc);

--    src = image_from_pict(pSrc, FALSE, &amp;src_xoff, &amp;src_yoff);
--    dst = image_from_pict(pDst, TRUE, &amp;dst_xoff, &amp;dst_yoff);
-+    src = image_from_pict(pSrc, FALSE);
-+    dst = image_from_pict(pDst, TRUE);

-     if (src &amp;&amp; dst) {
-         pixman_format_code_t format;
-@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,

-             for (i = 0; i &lt; nshapes; ++i) {
-                 composite(op, src, dst, format,
--                          xSrc + src_xoff,
--                          ySrc + src_yoff,
--                          dst_xoff, dst_yoff, 1, shapes + i * shape_size);
-+                          xSrc, ySrc, 0, 0, 
-+                          1, shapes + i * shape_size);
-             }
-         }
-         else {
-@@ -143,8 +136,8 @@ fbShapes(CompositeShapesFunc composite,
-             }

-             composite(op, src, dst, format,
--                      xSrc + src_xoff,
--                      ySrc + src_yoff, dst_xoff, dst_yoff, nshapes, shapes);
-+                      xSrc, ySrc, 0, 0,
-+                      nshapes, shapes);
-         }

-         DamageRegionProcessPending(pDst-&gt;pDrawable);
--- 
-2.6.2
-
</del></span></pre></div>
<a id="trunkdportsx11xorgserverdevelfiles5003fbRevertfbchangesthatbrokeXQuartzpatch"></a>
<div class="modfile"><h4>Modified: trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch (143916 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:22:12 UTC (rev 143916)
+++ trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -1,243 +1,320 @@
</span><del>-From eba7a98962935c0fc0046ec4239562bd450d064b Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
-Date: Sat, 31 May 2014 13:14:20 -0700
-Subject: [PATCH 5003/5003] fb: Revert fb changes that broke XQuartz
</del><ins>+From 9815dff3336a4a04fa4c6c8c0c75ea98ef8b82c5 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
+Date: Fri, 12 Feb 2010 19:48:52 -0800
+Subject: [PATCH 5003/5004] fb: Revert fb changes that broke XQuartz
</ins><span class="cx"> 
</span><del>-    http://bugs.freedesktop.org/show_bug.cgi?id=26124
</del><ins>+http://bugs.freedesktop.org/show_bug.cgi?id=26124
</ins><span class="cx"> 
</span><del>-Revert &quot;Use new pixman_glyph_cache_t API that will be in pixman 0.28.0&quot;
-Revert &quot;fb: Fix origin of source picture in fbGlyphs&quot;
-Revert &quot;fb: Publish fbGlyphs and fbUnrealizeGlyph&quot;
</del><ins>+Revert &quot;Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5.&quot;
+Revert &quot;fb: Adjust transform or composite coordinates for pixman operations&quot;
</ins><span class="cx"> 
</span><del>-This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
-This reverts commit 983e30361f49a67252d0b5d82630e70724d69dbf.
-This reverts commit 3c2c59eed3c68c0e5a93c38cf01eedad015e3157.
</del><ins>+http://bugs.freedesktop.org/26124
+
+This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
+This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
+
+Signed-off-by: Jeremy Huddleston &lt;jeremyhu@apple.com&gt;
</ins><span class="cx"> ---
</span><del>- fb/fb.h       |   3 --
- fb/fbpict.c   | 149 +---------------------------------------------------------
- fb/fbpict.h   |  11 +----
- fb/fbscreen.c |   1 -
- 4 files changed, 2 insertions(+), 162 deletions(-)
</del><ins>+ fb/fb.h     |  3 +--
+ fb/fbpict.c | 82 ++++++++++++++++++-------------------------------------------
+ fb/fbtrap.c | 43 ++++++++++++++------------------
+ 3 files changed, 43 insertions(+), 85 deletions(-)
</ins><span class="cx"> 
</span><span class="cx"> diff --git a/fb/fb.h b/fb/fb.h
</span><del>-index 256a1ee..8e87498 100644
</del><ins>+index c687aa7..256a1ee 100644
</ins><span class="cx"> --- a/fb/fb.h
</span><span class="cx"> +++ b/fb/fb.h
</span><del>-@@ -1111,9 +1111,6 @@ extern _X_EXPORT void
- extern _X_EXPORT Bool
-  fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
</del><ins>+@@ -1321,8 +1321,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
+                   RegionPtr pRegion, FbBits and, FbBits xor);
</ins><span class="cx">  
</span><del>--extern _X_EXPORT void
--fbDestroyGlyphCache(void);
--
- /*
-  * fbpixmap.c
-  */
</del><ins>+ extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict,
+-                                                 Bool has_clip,
+-                                                 int *xoff, int *yoff);
++                                                 Bool has_clip);

+ extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *);

</ins><span class="cx"> diff --git a/fb/fbpict.c b/fb/fbpict.c
</span><del>-index be8274b..66dd633 100644
</del><ins>+index 434d890..be8274b 100644
</ins><span class="cx"> --- a/fb/fbpict.c
</span><span class="cx"> +++ b/fb/fbpict.c
</span><del>-@@ -65,152 +65,6 @@ fbComposite(CARD8 op,
-     free_pixman_pict(pDst, dest);
</del><ins>+@@ -46,23 +46,18 @@ fbComposite(CARD8 op,
+             INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height)
+ {
+     pixman_image_t *src, *mask, *dest;
+-    int src_xoff, src_yoff;
+-    int msk_xoff, msk_yoff;
+-    int dst_xoff, dst_yoff;
+-
+     miCompositeSourceValidate(pSrc);
+     if (pMask)
+         miCompositeSourceValidate(pMask);

+-    src = image_from_pict(pSrc, FALSE, &amp;src_xoff, &amp;src_yoff);
+-    mask = image_from_pict(pMask, FALSE, &amp;msk_xoff, &amp;msk_yoff);
+-    dest = image_from_pict(pDst, TRUE, &amp;dst_xoff, &amp;dst_yoff);
++    src = image_from_pict(pSrc, TRUE);
++    mask = image_from_pict(pMask, TRUE);
++    dest = image_from_pict(pDst, TRUE);

+     if (src &amp;&amp; dest &amp;&amp; !(pMask &amp;&amp; !mask)) {
+         pixman_image_composite(op, src, mask, dest,
+-                               xSrc + src_xoff, ySrc + src_yoff,
+-                               xMask + msk_xoff, yMask + msk_yoff,
+-                               xDst + dst_xoff, yDst + dst_yoff, width, height);
++                               xSrc, ySrc, xMask, yMask, xDst, yDst,
++                               width, height);
+     }

+     free_pixman_pict(pSrc, src);
+@@ -289,20 +284,22 @@ create_conical_gradient_image(PictGradient * gradient)
</ins><span class="cx">  }
</span><span class="cx">  
</span><del>--static pixman_glyph_cache_t *glyphCache;
</del><ins>+ static pixman_image_t *
+-create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
++create_bits_picture(PicturePtr pict, Bool has_clip)
+ {
+-    PixmapPtr pixmap;
+     FbBits *bits;
+     FbStride stride;
+-    int bpp;
++    int bpp, xoff, yoff;
+     pixman_image_t *image;

+-    fbGetDrawablePixmap(pict-&gt;pDrawable, pixmap, *xoff, *yoff);
+-    fbGetPixmapBitsData(pixmap, bits, stride, bpp);
++    fbGetDrawable (pict-&gt;pDrawable, bits, stride, bpp, xoff, yoff);
++
++    bits = (FbBits*)((CARD8*)bits +
++                     (pict-&gt;pDrawable-&gt;y + yoff) * stride * sizeof(FbBits) +
++                     (pict-&gt;pDrawable-&gt;x + xoff) * (bpp / 8));

+     image = pixman_image_create_bits((pixman_format_code_t) pict-&gt;format,
+-                                     pixmap-&gt;drawable.width,
+-                                     pixmap-&gt;drawable.height, (uint32_t *) bits,
++                                     pict-&gt;pDrawable-&gt;width,
++                                     pict-&gt;pDrawable-&gt;height, (uint32_t *) bits,
+                                      stride * sizeof(FbStride));

+     if (!image)
+@@ -321,28 +318,21 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+         if (pict-&gt;clientClip)
+             pixman_image_set_has_client_clip(image, TRUE);

+-        if (*xoff || *yoff)
+-            pixman_region_translate(pict-&gt;pCompositeClip, *xoff, *yoff);
++        pixman_region_translate (pict-&gt;pCompositeClip, - pict-&gt;pDrawable-&gt;x, - pict-&gt;pDrawable-&gt;y);

+         pixman_image_set_clip_region(image, pict-&gt;pCompositeClip);

+-        if (*xoff || *yoff)
+-            pixman_region_translate(pict-&gt;pCompositeClip, -*xoff, -*yoff);
++        pixman_region_translate (pict-&gt;pCompositeClip, pict-&gt;pDrawable-&gt;x, pict-&gt;pDrawable-&gt;y);
+     }

+     /* Indexed table */
+     if (pict-&gt;pFormat-&gt;index.devPrivate)
+         pixman_image_set_indexed(image, pict-&gt;pFormat-&gt;index.devPrivate);

+-    /* Add in drawable origin to position within the image */
+-    *xoff += pict-&gt;pDrawable-&gt;x;
+-    *yoff += pict-&gt;pDrawable-&gt;y;
</ins><span class="cx"> -
</span><del>--void
--fbDestroyGlyphCache(void)
--{
--    if (glyphCache)
--    {
--        pixman_glyph_cache_destroy (glyphCache);
--        glyphCache = NULL;
--    }
--}
</del><ins>+     return image;
+ }

+ static pixman_image_t *image_from_pict_internal(PicturePtr pict, Bool has_clip,
+-                                                int *xoff, int *yoff,
+                                                 Bool is_alpha_map);

+ static void image_destroy(pixman_image_t *image, void *data)
+@@ -351,32 +341,13 @@ static void image_destroy(pixman_image_t *image, void *data)
+ }

+ static void
+-set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+-                     int *xoff, int *yoff, Bool is_alpha_map)
++set_image_properties(pixman_image_t * image, PicturePtr pict, Bool is_alpha_map)
+ {
+     pixman_repeat_t repeat;
+     pixman_filter_t filter;

+     if (pict-&gt;transform) {
+-        /* For source images, adjust the transform to account
+-         * for the drawable offset within the pixman image,
+-         * then set the offset to 0 as it will be used
+-         * to compute positions within the transformed image.
+-         */
+-        if (!has_clip) {
+-            struct pixman_transform adjusted;
</ins><span class="cx"> -
</span><del>--static void
--fbUnrealizeGlyph(ScreenPtr pScreen,
--                 GlyphPtr pGlyph)
--{
--    if (glyphCache)
--        pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
--}
</del><ins>+-            adjusted = *pict-&gt;transform;
+-            pixman_transform_translate(&amp;adjusted,
+-                                       NULL,
+-                                       pixman_int_to_fixed(*xoff),
+-                                       pixman_int_to_fixed(*yoff));
+-            pixman_image_set_transform(image, &amp;adjusted);
+-            *xoff = 0;
+-            *yoff = 0;
+-        }
+-        else
+-            pixman_image_set_transform(image, pict-&gt;transform);
++        pixman_image_set_transform(image, pict-&gt;transform);
+     }

+     switch (pict-&gt;repeatType) {
+@@ -404,10 +375,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+      * as the alpha map for this operation
+      */
+     if (pict-&gt;alphaMap &amp;&amp; !is_alpha_map) {
+-        int alpha_xoff, alpha_yoff;
+         pixman_image_t *alpha_map =
+-            image_from_pict_internal(pict-&gt;alphaMap, FALSE, &amp;alpha_xoff,
+-                                     &amp;alpha_yoff, TRUE);
++            image_from_pict_internal(pict-&gt;alphaMap, TRUE, TRUE);

+         pixman_image_set_alpha_map(image, alpha_map, pict-&gt;alphaOrigin.x,
+                                    pict-&gt;alphaOrigin.y);
+@@ -445,8 +414,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+ }

+ static pixman_image_t *
+-image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+-                         Bool is_alpha_map)
++image_from_pict_internal(PicturePtr pict, Bool has_clip, Bool is_alpha_map)
+ {
+     pixman_image_t *image = NULL;

+@@ -454,7 +422,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+         return NULL;

+     if (pict-&gt;pDrawable) {
+-        image = create_bits_picture(pict, has_clip, xoff, yoff);
++        image = create_bits_picture(pict, has_clip);
+     }
+     else if (pict-&gt;pSourcePict) {
+         SourcePict *sp = pict-&gt;pSourcePict;
+@@ -472,19 +440,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+             else if (sp-&gt;type == SourcePictTypeConical)
+                 image = create_conical_gradient_image(gradient);
+         }
+-        *xoff = *yoff = 0;
+     }

+     if (image)
+-        set_image_properties(image, pict, has_clip, xoff, yoff, is_alpha_map);
</ins><span class="cx"> -
</span><del>--void
--fbGlyphs(CARD8 op,
--         PicturePtr pSrc,
--         PicturePtr pDst,
--         PictFormatPtr maskFormat,
--         INT16 xSrc,
--         INT16 ySrc, int nlist,
--         GlyphListPtr list,
--         GlyphPtr *glyphs)
--{
--#define N_STACK_GLYPHS 512
--    ScreenPtr pScreen = pDst-&gt;pDrawable-&gt;pScreen;
--    pixman_glyph_t stack_glyphs[N_STACK_GLYPHS];
--    pixman_glyph_t *pglyphs = stack_glyphs;
--    pixman_image_t *srcImage, *dstImage;
--    int srcXoff, srcYoff, dstXoff, dstYoff;
--    GlyphPtr glyph;
--    int n_glyphs;
--    int x, y;
--    int i, n;
--    int xDst = list-&gt;xOff, yDst = list-&gt;yOff;
</del><ins>++        set_image_properties (image, pict, is_alpha_map);
+     return image;
+ }

+ pixman_image_t *
+-image_from_pict(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
++image_from_pict (PicturePtr pict, Bool has_clip)
+ {
+-    return image_from_pict_internal(pict, has_clip, xoff, yoff, FALSE);
++    return image_from_pict_internal (pict, has_clip, FALSE);
+ }

+ void
+diff --git a/fb/fbtrap.c b/fb/fbtrap.c
+index bf82f8f..0145ce9 100644
+--- a/fb/fbtrap.c
++++ b/fb/fbtrap.c
+@@ -36,13 +36,12 @@ fbAddTraps(PicturePtr pPicture,
+            INT16 x_off, INT16 y_off, int ntrap, xTrap * traps)
+ {
+     pixman_image_t *image;
+-    int dst_xoff, dst_yoff;

+-    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
+-        return;
</ins><span class="cx"> -
</span><del>--    miCompositeSourceValidate(pSrc);
--
--    n_glyphs = 0;
--    for (i = 0; i &lt; nlist; ++i)
--        n_glyphs += list[i].len;
--
--    if (!glyphCache)
--        glyphCache = pixman_glyph_cache_create();
--
--    pixman_glyph_cache_freeze (glyphCache);
--
--    if (n_glyphs &gt; N_STACK_GLYPHS) {
--        if (!(pglyphs = xallocarray(n_glyphs, sizeof(pixman_glyph_t))))
--            goto out;
--    }
--
--    i = 0;
--    x = y = 0;
--    while (nlist--) {
--        x += list-&gt;xOff;
--        y += list-&gt;yOff;
--        n = list-&gt;len;
--        while (n--) {
--            const void *g;
--
--            glyph = *glyphs++;
--
--            if (!(g = pixman_glyph_cache_lookup (glyphCache, glyph, NULL))) {
--                pixman_image_t *glyphImage;
--                PicturePtr pPicture;
--                int xoff, yoff;
--
--                pPicture = GetGlyphPicture(glyph, pScreen);
--                if (!pPicture) {
--                    n_glyphs--;
--                    goto next;
--                }
--
--                if (!(glyphImage = image_from_pict(pPicture, FALSE, &amp;xoff, &amp;yoff)))
--                    goto out;
--
--                g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
--                                              glyph-&gt;info.x,
--                                              glyph-&gt;info.y,
--                                              glyphImage);
--
--                free_pixman_pict(pPicture, glyphImage);
--
--                if (!g)
--                    goto out;
--            }
--
--            pglyphs[i].x = x;
--            pglyphs[i].y = y;
--            pglyphs[i].glyph = g;
--            i++;
--
--        next:
--            x += glyph-&gt;info.xOff;
--            y += glyph-&gt;info.yOff;
--        }
--        list++;
--    }
--
--    if (!(srcImage = image_from_pict(pSrc, FALSE, &amp;srcXoff, &amp;srcYoff)))
--        goto out;
--
--    if (!(dstImage = image_from_pict(pDst, TRUE, &amp;dstXoff, &amp;dstYoff)))
--        goto out_free_src;
--
--    if (maskFormat) {
--        pixman_format_code_t format;
--        pixman_box32_t extents;
--
--        format = maskFormat-&gt;format | (maskFormat-&gt;depth &lt;&lt; 24);
--
--        pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &amp;extents);
--
--        pixman_composite_glyphs(op, srcImage, dstImage, format,
--                                xSrc + srcXoff + extents.x1 - xDst, ySrc + srcYoff + extents.y1 - yDst,
--                                extents.x1, extents.y1,
--                                extents.x1 + dstXoff, extents.y1 + dstYoff,
--                                extents.x2 - extents.x1,
--                                extents.y2 - extents.y1,
--                                glyphCache, n_glyphs, pglyphs);
--    }
--    else {
--        pixman_composite_glyphs_no_mask(op, srcImage, dstImage,
--                                        xSrc + srcXoff - xDst, ySrc + srcYoff - yDst,
--                                        dstXoff, dstYoff,
--                                        glyphCache, n_glyphs, pglyphs);
--    }
--
--    free_pixman_pict(pDst, dstImage);
--
--out_free_src:
--    free_pixman_pict(pSrc, srcImage);
--
--out:
--    pixman_glyph_cache_thaw(glyphCache);
--    if (pglyphs != stack_glyphs)
--        free(pglyphs);
--}
--
- static pixman_image_t *
- create_solid_fill_image(PicturePtr pict)
</del><ins>+-    pixman_add_traps(image, x_off + dst_xoff, y_off + dst_yoff,
+-                     ntrap, (pixman_trap_t *) traps);
++    if (!(image = image_from_pict (pPicture, FALSE)))
++        return;
++    
++    pixman_add_traps(image, x_off, y_off,
++                     ntrap, (pixman_trap_t *)traps);

+     free_pixman_pict(pPicture, image);
+ }
+@@ -52,13 +51,12 @@ fbRasterizeTrapezoid(PicturePtr pPicture,
+                      xTrapezoid * trap, int x_off, int y_off)
</ins><span class="cx">  {
</span><del>-@@ -470,8 +324,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
-         return FALSE;
-     ps = GetPictureScreen(pScreen);
-     ps-&gt;Composite = fbComposite;
--    ps-&gt;Glyphs = fbGlyphs;
--    ps-&gt;UnrealizeGlyph = fbUnrealizeGlyph;
-+    ps-&gt;Glyphs = miGlyphs;
-     ps-&gt;CompositeRects = miCompositeRects;
-     ps-&gt;RasterizeTrapezoid = fbRasterizeTrapezoid;
-     ps-&gt;AddTraps = fbAddTraps;
-diff --git a/fb/fbpict.h b/fb/fbpict.h
-index 5cb8663..110f32d 100644
---- a/fb/fbpict.h
-+++ b/fb/fbpict.h
-@@ -65,20 +65,11 @@ fbTrapezoids(CARD8 op,
-              INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
</del><ins>+     pixman_image_t *image;
+-    int dst_xoff, dst_yoff;
</ins><span class="cx">  
</span><del>- extern _X_EXPORT void
-+
- fbTriangles(CARD8 op,
-             PicturePtr pSrc,
-             PicturePtr pDst,
-             PictFormatPtr maskFormat,
-             INT16 xSrc, INT16 ySrc, int ntris, xTriangle * tris);
</del><ins>+-    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
++    if (!(image = image_from_pict (pPicture, FALSE)))
+         return;
</ins><span class="cx">  
</span><del>--extern _X_EXPORT void
--fbGlyphs(CARD8 op,
--         PicturePtr pSrc,
--         PicturePtr pDst,
--         PictFormatPtr maskFormat,
--         INT16 xSrc,
--         INT16 ySrc, int nlist,
--         GlyphListPtr list,
--         GlyphPtr *glyphs);
</del><ins>+-    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *) trap,
+-                               x_off + dst_xoff, y_off + dst_yoff);
++    pixman_rasterize_trapezoid(image, (pixman_trapezoid_t *)trap,
++                               x_off, y_off);

+     free_pixman_pict(pPicture, image);
+ }
+@@ -68,14 +66,12 @@ fbAddTriangles(PicturePtr pPicture,
+                INT16 x_off, INT16 y_off, int ntri, xTriangle * tris)
+ {
+     pixman_image_t *image;
+-    int dst_xoff, dst_yoff;

+-    if (!(image = image_from_pict(pPicture, FALSE, &amp;dst_xoff, &amp;dst_yoff)))
++    if (!(image = image_from_pict (pPicture, FALSE)))
+         return;
</ins><span class="cx"> -
</span><del>- #endif                          /* _FBPICT_H_ */
-diff --git a/fb/fbscreen.c b/fb/fbscreen.c
-index 71bcc5d..55330fc 100644
---- a/fb/fbscreen.c
-+++ b/fb/fbscreen.c
-@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
-     int d;
-     DepthPtr depths = pScreen-&gt;allowedDepths;
</del><ins>+-    pixman_add_triangles(image,
+-                         dst_xoff + x_off, dst_yoff + y_off,
+-                         ntri, (pixman_triangle_t *) tris);
++    
++    pixman_add_triangles(image, x_off, y_off, ntri,
++                         (pixman_triangle_t *)tris);
</ins><span class="cx">  
</span><del>--    fbDestroyGlyphCache();
-     for (d = 0; d &lt; pScreen-&gt;numDepths; d++)
-         free(depths[d].vids);
-     free(depths);
</del><ins>+     free_pixman_pict(pPicture, image);
+ }
+@@ -98,13 +94,11 @@ fbShapes(CompositeShapesFunc composite,
+          int16_t ySrc, int nshapes, int shape_size, const uint8_t * shapes)
+ {
+     pixman_image_t *src, *dst;
+-    int src_xoff, src_yoff;
+-    int dst_xoff, dst_yoff;

+     miCompositeSourceValidate(pSrc);

+-    src = image_from_pict(pSrc, FALSE, &amp;src_xoff, &amp;src_yoff);
+-    dst = image_from_pict(pDst, TRUE, &amp;dst_xoff, &amp;dst_yoff);
++    src = image_from_pict(pSrc, FALSE);
++    dst = image_from_pict(pDst, TRUE);

+     if (src &amp;&amp; dst) {
+         pixman_format_code_t format;
+@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,

+             for (i = 0; i &lt; nshapes; ++i) {
+                 composite(op, src, dst, format,
+-                          xSrc + src_xoff,
+-                          ySrc + src_yoff,
+-                          dst_xoff, dst_yoff, 1, shapes + i * shape_size);
++                          xSrc, ySrc, 0, 0, 
++                          1, shapes + i * shape_size);
+             }
+         }
+         else {
+@@ -143,8 +136,8 @@ fbShapes(CompositeShapesFunc composite,
+             }

+             composite(op, src, dst, format,
+-                      xSrc + src_xoff,
+-                      ySrc + src_yoff, dst_xoff, dst_yoff, nshapes, shapes);
++                      xSrc, ySrc, 0, 0,
++                      nshapes, shapes);
+         }

+         DamageRegionProcessPending(pDst-&gt;pDrawable);
</ins><span class="cx"> -- 
</span><del>-2.6.2
</del><ins>+2.6.3
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkdportsx11xorgserverdevelfiles5004fbRevertfbchangesthatbrokeXQuartzpatch"></a>
<div class="addfile"><h4>Added: trunk/dports/x11/xorg-server-devel/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch (0 => 143917)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/x11/xorg-server-devel/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch                                (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch        2015-12-26 19:34:13 UTC (rev 143917)
</span><span class="lines">@@ -0,0 +1,243 @@
</span><ins>+From 2c1194b085622ee5c8484d0a9b0a310a18704132 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia &lt;jeremyhu@apple.com&gt;
+Date: Sat, 31 May 2014 13:14:20 -0700
+Subject: [PATCH 5004/5004] fb: Revert fb changes that broke XQuartz
+
+    http://bugs.freedesktop.org/show_bug.cgi?id=26124
+
+Revert &quot;Use new pixman_glyph_cache_t API that will be in pixman 0.28.0&quot;
+Revert &quot;fb: Fix origin of source picture in fbGlyphs&quot;
+Revert &quot;fb: Publish fbGlyphs and fbUnrealizeGlyph&quot;
+
+This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
+This reverts commit 983e30361f49a67252d0b5d82630e70724d69dbf.
+This reverts commit 3c2c59eed3c68c0e5a93c38cf01eedad015e3157.
+---
+ fb/fb.h       |   3 --
+ fb/fbpict.c   | 149 +---------------------------------------------------------
+ fb/fbpict.h   |  11 +----
+ fb/fbscreen.c |   1 -
+ 4 files changed, 2 insertions(+), 162 deletions(-)
+
+diff --git a/fb/fb.h b/fb/fb.h
+index 256a1ee..8e87498 100644
+--- a/fb/fb.h
++++ b/fb/fb.h
+@@ -1111,9 +1111,6 @@ extern _X_EXPORT void
+ extern _X_EXPORT Bool
+  fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);

+-extern _X_EXPORT void
+-fbDestroyGlyphCache(void);
+-
+ /*
+  * fbpixmap.c
+  */
+diff --git a/fb/fbpict.c b/fb/fbpict.c
+index be8274b..66dd633 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -65,152 +65,6 @@ fbComposite(CARD8 op,
+     free_pixman_pict(pDst, dest);
+ }

+-static pixman_glyph_cache_t *glyphCache;
+-
+-void
+-fbDestroyGlyphCache(void)
+-{
+-    if (glyphCache)
+-    {
+-        pixman_glyph_cache_destroy (glyphCache);
+-        glyphCache = NULL;
+-    }
+-}
+-
+-static void
+-fbUnrealizeGlyph(ScreenPtr pScreen,
+-                 GlyphPtr pGlyph)
+-{
+-    if (glyphCache)
+-        pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
+-}
+-
+-void
+-fbGlyphs(CARD8 op,
+-         PicturePtr pSrc,
+-         PicturePtr pDst,
+-         PictFormatPtr maskFormat,
+-         INT16 xSrc,
+-         INT16 ySrc, int nlist,
+-         GlyphListPtr list,
+-         GlyphPtr *glyphs)
+-{
+-#define N_STACK_GLYPHS 512
+-    ScreenPtr pScreen = pDst-&gt;pDrawable-&gt;pScreen;
+-    pixman_glyph_t stack_glyphs[N_STACK_GLYPHS];
+-    pixman_glyph_t *pglyphs = stack_glyphs;
+-    pixman_image_t *srcImage, *dstImage;
+-    int srcXoff, srcYoff, dstXoff, dstYoff;
+-    GlyphPtr glyph;
+-    int n_glyphs;
+-    int x, y;
+-    int i, n;
+-    int xDst = list-&gt;xOff, yDst = list-&gt;yOff;
+-
+-    miCompositeSourceValidate(pSrc);
+-
+-    n_glyphs = 0;
+-    for (i = 0; i &lt; nlist; ++i)
+-        n_glyphs += list[i].len;
+-
+-    if (!glyphCache)
+-        glyphCache = pixman_glyph_cache_create();
+-
+-    pixman_glyph_cache_freeze (glyphCache);
+-
+-    if (n_glyphs &gt; N_STACK_GLYPHS) {
+-        if (!(pglyphs = xallocarray(n_glyphs, sizeof(pixman_glyph_t))))
+-            goto out;
+-    }
+-
+-    i = 0;
+-    x = y = 0;
+-    while (nlist--) {
+-        x += list-&gt;xOff;
+-        y += list-&gt;yOff;
+-        n = list-&gt;len;
+-        while (n--) {
+-            const void *g;
+-
+-            glyph = *glyphs++;
+-
+-            if (!(g = pixman_glyph_cache_lookup (glyphCache, glyph, NULL))) {
+-                pixman_image_t *glyphImage;
+-                PicturePtr pPicture;
+-                int xoff, yoff;
+-
+-                pPicture = GetGlyphPicture(glyph, pScreen);
+-                if (!pPicture) {
+-                    n_glyphs--;
+-                    goto next;
+-                }
+-
+-                if (!(glyphImage = image_from_pict(pPicture, FALSE, &amp;xoff, &amp;yoff)))
+-                    goto out;
+-
+-                g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
+-                                              glyph-&gt;info.x,
+-                                              glyph-&gt;info.y,
+-                                              glyphImage);
+-
+-                free_pixman_pict(pPicture, glyphImage);
+-
+-                if (!g)
+-                    goto out;
+-            }
+-
+-            pglyphs[i].x = x;
+-            pglyphs[i].y = y;
+-            pglyphs[i].glyph = g;
+-            i++;
+-
+-        next:
+-            x += glyph-&gt;info.xOff;
+-            y += glyph-&gt;info.yOff;
+-        }
+-        list++;
+-    }
+-
+-    if (!(srcImage = image_from_pict(pSrc, FALSE, &amp;srcXoff, &amp;srcYoff)))
+-        goto out;
+-
+-    if (!(dstImage = image_from_pict(pDst, TRUE, &amp;dstXoff, &amp;dstYoff)))
+-        goto out_free_src;
+-
+-    if (maskFormat) {
+-        pixman_format_code_t format;
+-        pixman_box32_t extents;
+-
+-        format = maskFormat-&gt;format | (maskFormat-&gt;depth &lt;&lt; 24);
+-
+-        pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &amp;extents);
+-
+-        pixman_composite_glyphs(op, srcImage, dstImage, format,
+-                                xSrc + srcXoff + extents.x1 - xDst, ySrc + srcYoff + extents.y1 - yDst,
+-                                extents.x1, extents.y1,
+-                                extents.x1 + dstXoff, extents.y1 + dstYoff,
+-                                extents.x2 - extents.x1,
+-                                extents.y2 - extents.y1,
+-                                glyphCache, n_glyphs, pglyphs);
+-    }
+-    else {
+-        pixman_composite_glyphs_no_mask(op, srcImage, dstImage,
+-                                        xSrc + srcXoff - xDst, ySrc + srcYoff - yDst,
+-                                        dstXoff, dstYoff,
+-                                        glyphCache, n_glyphs, pglyphs);
+-    }
+-
+-    free_pixman_pict(pDst, dstImage);
+-
+-out_free_src:
+-    free_pixman_pict(pSrc, srcImage);
+-
+-out:
+-    pixman_glyph_cache_thaw(glyphCache);
+-    if (pglyphs != stack_glyphs)
+-        free(pglyphs);
+-}
+-
+ static pixman_image_t *
+ create_solid_fill_image(PicturePtr pict)
+ {
+@@ -470,8 +324,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+         return FALSE;
+     ps = GetPictureScreen(pScreen);
+     ps-&gt;Composite = fbComposite;
+-    ps-&gt;Glyphs = fbGlyphs;
+-    ps-&gt;UnrealizeGlyph = fbUnrealizeGlyph;
++    ps-&gt;Glyphs = miGlyphs;
+     ps-&gt;CompositeRects = miCompositeRects;
+     ps-&gt;RasterizeTrapezoid = fbRasterizeTrapezoid;
+     ps-&gt;AddTraps = fbAddTraps;
+diff --git a/fb/fbpict.h b/fb/fbpict.h
+index 5cb8663..110f32d 100644
+--- a/fb/fbpict.h
++++ b/fb/fbpict.h
+@@ -65,20 +65,11 @@ fbTrapezoids(CARD8 op,
+              INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);

+ extern _X_EXPORT void
++
+ fbTriangles(CARD8 op,
+             PicturePtr pSrc,
+             PicturePtr pDst,
+             PictFormatPtr maskFormat,
+             INT16 xSrc, INT16 ySrc, int ntris, xTriangle * tris);

+-extern _X_EXPORT void
+-fbGlyphs(CARD8 op,
+-         PicturePtr pSrc,
+-         PicturePtr pDst,
+-         PictFormatPtr maskFormat,
+-         INT16 xSrc,
+-         INT16 ySrc, int nlist,
+-         GlyphListPtr list,
+-         GlyphPtr *glyphs);
+-
+ #endif                          /* _FBPICT_H_ */
+diff --git a/fb/fbscreen.c b/fb/fbscreen.c
+index 71bcc5d..55330fc 100644
+--- a/fb/fbscreen.c
++++ b/fb/fbscreen.c
+@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
+     int d;
+     DepthPtr depths = pScreen-&gt;allowedDepths;

+-    fbDestroyGlyphCache();
+     for (d = 0; d &lt; pScreen-&gt;numDepths; d++)
+         free(depths[d].vids);
+     free(depths);
+-- 
+2.6.3
+
</ins></span></pre>
</div>
</div>

</body>
</html>