[122294] trunk/dports/x11
jeremyhu at macports.org
jeremyhu at macports.org
Sat Jul 19 17:21:23 PDT 2014
Revision: 122294
https://trac.macports.org/changeset/122294
Author: jeremyhu at macports.org
Date: 2014-07-19 17:21:23 -0700 (Sat, 19 Jul 2014)
Log Message:
-----------
xorg-server, fontsproto, xorg-libXfont: Bump to 1.16 server and compatible font proto/lib
Modified Paths:
--------------
trunk/dports/x11/xorg-fontsproto/Portfile
trunk/dports/x11/xorg-libXfont/Portfile
trunk/dports/x11/xorg-server/Portfile
trunk/dports/x11/xorg-server/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
trunk/dports/x11/xorg-server/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
trunk/dports/x11/xorg-server/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch
trunk/dports/x11/xorg-server-devel/Portfile
trunk/dports/x11/xorg-server-devel/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
trunk/dports/x11/xorg-server-devel/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch
Added Paths:
-----------
trunk/dports/x11/xorg-server/files/0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch
trunk/dports/x11/xorg-server/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch
trunk/dports/x11/xorg-server/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
trunk/dports/x11/xorg-server-devel/files/0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch
trunk/dports/x11/xorg-server-devel/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch
trunk/dports/x11/xorg-server-devel/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
Removed Paths:
-------------
trunk/dports/x11/xorg-server/files/0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch
trunk/dports/x11/xorg-server/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch
trunk/dports/x11/xorg-server/files/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch
trunk/dports/x11/xorg-server-devel/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch
trunk/dports/x11/xorg-server-devel/files/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch
Modified: trunk/dports/x11/xorg-fontsproto/Portfile
===================================================================
--- trunk/dports/x11/xorg-fontsproto/Portfile 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-fontsproto/Portfile 2014-07-20 00:21:23 UTC (rev 122294)
@@ -3,7 +3,7 @@
PortSystem 1.0
name xorg-fontsproto
-version 2.1.2
+version 2.1.3
categories x11 devel
license X11
maintainers jeremyhu openmaintainer
@@ -15,9 +15,9 @@
master_sites xorg:individual/proto/
distname fontsproto-${version}
-checksums sha1 538f0880faa6981cb1a348ced93dc715c42840f7 \
- rmd160 5a196c43dab89c7f4887dc14b419d53604e5672b \
- sha256 869c97e5a536a8f3c9bc8b9923780ff1f062094bab935e26f96df3d6f1aa68a9
+checksums sha1 28c108bd6438c332122c10871c1fc6415591755f \
+ rmd160 caa89b1818cc4ee5bd202faa25224aa6c89db1ed \
+ sha256 259046b0dd9130825c4a4c479ba3591d6d0f17a33f54e294b56478729a6e5ab8
use_bzip2 yes
configure.args \
Modified: trunk/dports/x11/xorg-libXfont/Portfile
===================================================================
--- trunk/dports/x11/xorg-libXfont/Portfile 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-libXfont/Portfile 2014-07-20 00:21:23 UTC (rev 122294)
@@ -3,7 +3,7 @@
PortSystem 1.0
name xorg-libXfont
-version 1.4.8
+version 1.5.0
categories x11 devel
license X11 BSD
maintainers jeremyhu openmaintainer
@@ -14,9 +14,9 @@
master_sites xorg:individual/lib/
distname libXfont-${version}
-checksums sha1 687746ba7e6d6064cb2b930e2dfe744603a5f85b \
- rmd160 4ab6fff999c13163c30eb455329c1c37b6891e69 \
- sha256 5568d4febf790fb250fb8d4ecf1f389a428eb545a79fb2abe9c82f652d14d005
+checksums sha1 54d0d0814679901ebf6dd2dd656c8842a4a61b6c \
+ rmd160 ab0ae026c9268a499131ee95f28c420710ef2f64 \
+ sha256 3a3c52c4adf9352b2160f07ff0596af17ab14f91d6509564e606678a1261c25f
use_bzip2 yes
use_parallel_build yes
Modified: trunk/dports/x11/xorg-server/Portfile
===================================================================
--- trunk/dports/x11/xorg-server/Portfile 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server/Portfile 2014-07-20 00:21:23 UTC (rev 122294)
@@ -5,7 +5,7 @@
name xorg-server
conflicts xorg-server-devel
set my_name xorg-server
-version 1.15.1
+version 1.16.0
categories x11 devel
license X11
maintainers jeremyhu openmaintainer
@@ -20,9 +20,9 @@
dist_subdir ${my_name}
distname ${my_name}-${version}
-checksums sha1 746e533213db8190bf8d71efd54587fd5b5b6511 \
- rmd160 b805ab772cf1161e07ccbbeee1090629bf4e3bbe \
- sha256 626db6882602ebe1ff81f7a4231c7ccc6ceb5032f2b5b3954bf749e1567221e2
+checksums sha1 0b5ce3868c1c617c21e19ce863aab1ede6e154c4 \
+ rmd160 9a1eca0d7e3a3e1a536269f4ceeb47a551e1d60b \
+ sha256 38330a03c5f7a38745a3f9816cf069db5b8844eebb358fd39dbabf61f32cd06b
use_bzip2 yes
use_parallel_build yes
@@ -87,12 +87,12 @@
RAWCPP=${configure.cpp}
patchfiles \
- 0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch \
+ 0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch \
5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch \
5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch \
- 5002-fb-Revert-fb-changes-that-broke-XQuartz.patch \
+ 5002-Use-old-miTrapezoids-and-miTriangles-routines.patch \
5003-fb-Revert-fb-changes-that-broke-XQuartz.patch \
- 5004-Use-old-miTrapezoids-and-miTriangles-routines.patch
+ 5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
patch.pre_args -p1
Deleted: trunk/dports/x11/xorg-server/files/0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server/files/0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,33 +0,0 @@
-From ec6007e6f7772a90713c9c51c64359229961ce27 Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
-Date: Sun, 6 Apr 2014 05:32:00 -0700
-Subject: [PATCH] XQuartz: Ensure we wait for the server thread to terminate
-
-AKA: XQuartz 2.7.5 doesn't delete its /tmp/.X$d-lock
-
-http://xquartz.macosforge.org/trac/ticket/823
-
-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
----
- hw/xquartz/X11Controller.m | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m
-index 5445c6f..022e832 100644
---- a/hw/xquartz/X11Controller.m
-+++ b/hw/xquartz/X11Controller.m
-@@ -942,9 +942,8 @@ extern char *bundle_id_prefix;
- /* shutdown the X server, it will exit () for us. */
- DarwinSendDDXEvent(kXquartzQuit, 0);
-
-- /* In case it doesn't, exit anyway after a while. */
-- remain = 10000000;
-- while ((remain = usleep(remain)) > 0) ;
-+ /* In case it doesn't, exit anyway after 5s. */
-+ [NSThread sleepForTimeInterval:5.0];
-
- exit(1);
- }
---
-1.9.1
-
Added: trunk/dports/x11/xorg-server/files/0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch (rev 0)
+++ trunk/dports/x11/xorg-server/files/0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -0,0 +1,43 @@
+From 07389f7dc7504bcd3892b1031446fd3eb2573c7c Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Sat, 19 Jul 2014 17:08:09 -0700
+Subject: [PATCH] mieq: Fix a crash regression in mieqProcessDeviceEvent
+
+(lldb) bt
+* thread #6: tid = 0x92d4eb, 0x00000001001dee94 X11.bin`mieqProcessDeviceEvent(dev=0x0000000000000000, event=0x0000000100298bb0,
+screen=0x0000000000000000) + 36 at mieq.c:519, stop reason = EXC_BAD_ACCESS (code=1, address=0x44)
+ * frame #0: 0x00000001001dee94 X11.bin`mieqProcessDeviceEvent(dev=0x0000000000000000, event=0x0000000100298bb0, screen=0x0000000000000000) + 36 at
+mieq.c:519
+ frame #1: 0x00000001001df3eb X11.bin`mieqProcessInputEvents + 555 at mieq.c:631
+ frame #2: 0x0000000100017674 X11.bin`ProcessInputEvents + 20 at darwinEvents.c:422
+ frame #3: 0x0000000100175eaa X11.bin`Dispatch + 154 at dispatch.c:357
+ frame #4: 0x0000000100181b4a X11.bin`dix_main(argc=4, argv=0x00007fff5fbff750, envp=0x00007fff5fbff650) + 1594 at main.c:296
+ frame #5: 0x000000010001ba80 X11.bin`server_thread(arg=0x0000000101208220) + 64 at quartzStartup.c:66
+ frame #6: 0x00007fff89bb9899 libsystem_pthread.dylib`_pthread_body + 138
+ frame #7: 0x00007fff89bb972a libsystem_pthread.dylib`_pthread_start + 137
+ frame #8: 0x00007fff89bbdfc9 libsystem_pthread.dylib`thread_start + 13
+
+Regression from: 9fb08310b51b46736f3ca8dbc04efdf502420403
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+CC: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ mi/mieq.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mi/mieq.c b/mi/mieq.c
+index 872ff93..aced60d 100644
+--- a/mi/mieq.c
++++ b/mi/mieq.c
+@@ -516,7 +516,7 @@ mieqProcessDeviceEvent(DeviceIntPtr dev, InternalEvent *event, ScreenPtr screen)
+ verify_internal_event(event);
+
+ /* refuse events from disabled devices */
+- if (!dev->enabled)
++ if (!dev || !dev->enabled)
+ return;
+
+ /* Custom event handler */
+--
+2.0.1
+
Modified: trunk/dports/x11/xorg-server/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,4 +1,4 @@
-From b877aca8da4fec52875cbf03646ffad0ffd31ae1 Mon Sep 17 00:00:00 2001
+From f2126ef96002eda432e1974f14a914dc075ef017 Mon Sep 17 00:00:00 2001
From: Jeremy Huddleston <jeremyhu at apple.com>
Date: Fri, 13 Jan 2012 12:00:57 -0800
Subject: [PATCH 5000/5004] sdksyms.sh: Use CPPFLAGS, not CFLAGS
@@ -14,10 +14,10 @@
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
-index 15670d0..b35e464 100644
+index c5992c3..71b6769 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
-@@ -43,8 +43,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
+@@ -48,8 +48,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
bin_PROGRAMS = Xorg
nodist_Xorg_SOURCES = sdksyms.c
@@ -27,7 +27,7 @@
-I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
-I$(srcdir)/dri -I$(srcdir)/dri2 -I$(top_srcdir)/dri3
-@@ -118,7 +117,7 @@ CLEANFILES = sdksyms.c sdksyms.dep
+@@ -135,7 +134,7 @@ CLEANFILES = sdksyms.c sdksyms.dep Xorg.sh
EXTRA_DIST += sdksyms.sh
sdksyms.dep sdksyms.c: sdksyms.sh
@@ -35,7 +35,7 @@
+ $(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CPPFLAGS) $(AM_CPPFLAGS)
SDKSYMS_DEP = sdksyms.dep
- include $(SDKSYMS_DEP)
+ -include $(SDKSYMS_DEP)
--
-1.9.1
+2.0.1
Modified: trunk/dports/x11/xorg-server/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,4 +1,4 @@
-From 152a52f607d68c65683eebc61cbb288ec2670b2a Mon Sep 17 00:00:00 2001
+From 2f09ff191ef3a03a992d15f6f8176db0892d32f4 Mon Sep 17 00:00:00 2001
From: Jeremy Huddleston <jeremyhu at apple.com>
Date: Fri, 30 Apr 2010 13:08:25 -0700
Subject: [PATCH 5001/5004] Workaround the GC clipping problem in miPaintWindow
@@ -10,7 +10,7 @@
1 file changed, 94 insertions(+), 10 deletions(-)
diff --git a/mi/miexpose.c b/mi/miexpose.c
-index 8b7c93f..3e972f7 100644
+index 198c433..ad1621d 100644
--- a/mi/miexpose.c
+++ b/mi/miexpose.c
@@ -489,7 +489,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
@@ -161,5 +161,5 @@
pbox = RegionRects(prgn);
for (i = numRects; --i >= 0; pbox++, prect++) {
--
-1.9.1
+2.0.1
Added: trunk/dports/x11/xorg-server/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch
===================================================================
--- 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 2014-07-20 00:21:23 UTC (rev 122294)
@@ -0,0 +1,297 @@
+From 8a899939a369a04a31d5c1d118079845890127d4 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+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 <jeremyhu at apple.com>
+---
+ 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 21baf89..65eb2a4 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -507,10 +507,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+ ps->UnrealizeGlyph = fbUnrealizeGlyph;
+ ps->CompositeRects = miCompositeRects;
+ ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
+- ps->Trapezoids = fbTrapezoids;
+ ps->AddTraps = fbAddTraps;
+ ps->AddTriangles = fbAddTriangles;
+- ps->Triangles = fbTriangles;
+
+ return TRUE;
+ }
+diff --git a/render/mipict.c b/render/mipict.c
+index 3959fc4..2bb1a1d 100644
+--- a/render/mipict.c
++++ b/render/mipict.c
+@@ -595,8 +595,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+ ps->Composite = 0; /* requires DDX support */
+ ps->Glyphs = miGlyphs;
+ ps->CompositeRects = miCompositeRects;
+- ps->Trapezoids = 0;
+- ps->Triangles = 0;
++ ps->Trapezoids = miTrapezoids;
++ ps->Triangles = miTriangles;
+
+ ps->RasterizeTrapezoid = 0; /* requires DDX support */
+ ps->AddTraps = 0; /* requires DDX support */
+diff --git a/render/mipict.h b/render/mipict.h
+index a16dd31..ee90b58 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 "picturestr.h"
+ #include "mipict.h"
+
++PicturePtr
++miCreateAlphaPicture (ScreenPtr pScreen,
++ PicturePtr pDst,
++ PictFormatPtr pPictFormat,
++ CARD16 width,
++ CARD16 height)
++{
++ PixmapPtr pPixmap;
++ PicturePtr pPicture;
++ GCPtr pGC;
++ int error;
++ xRectangle rect;
++
++ if (width > 32767 || height > 32767)
++ return 0;
++
++ if (!pPictFormat)
++ {
++ if (pDst->polyEdge == PolyEdgeSharp)
++ pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++ else
++ pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++ if (!pPictFormat)
++ return 0;
++ }
++
++ pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height,
++ pPictFormat->depth, 0);
++ if (!pPixmap)
++ return 0;
++ pGC = GetScratchGC (pPixmap->drawable.depth, pScreen);
++ if (!pGC)
++ {
++ (*pScreen->DestroyPixmap) (pPixmap);
++ return 0;
++ }
++ ValidateGC (&pPixmap->drawable, pGC);
++ rect.x = 0;
++ rect.y = 0;
++ rect.width = width;
++ rect.height = height;
++ (*pGC->ops->PolyFillRect)(&pPixmap->drawable, pGC, 1, &rect);
++ FreeScratchGC (pGC);
++ pPicture = CreatePicture (0, &pPixmap->drawable, pPictFormat,
++ 0, 0, serverClient, &error);
++ (*pScreen->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->x2 = x2;
+ }
+ }
++
++
++void
++miTrapezoids (CARD8 op,
++ PicturePtr pSrc,
++ PicturePtr pDst,
++ PictFormatPtr maskFormat,
++ INT16 xSrc,
++ INT16 ySrc,
++ int ntrap,
++ xTrapezoid *traps)
++{
++ ScreenPtr pScreen = pDst->pDrawable->pScreen;
++ PictureScreenPtr ps = GetPictureScreen(pScreen);
++
++ /*
++ * Check for solid alpha add
++ */
++ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
++ {
++ for (; ntrap; ntrap--, traps++)
++ (*ps->RasterizeTrapezoid) (pDst, traps, 0, 0);
++ }
++ else if (maskFormat)
++ {
++ PicturePtr pPicture;
++ BoxRec bounds;
++ INT16 xDst, yDst;
++ INT16 xRel, yRel;
++
++ xDst = traps[0].left.p1.x >> 16;
++ yDst = traps[0].left.p1.y >> 16;
++
++ miTrapezoidBounds (ntrap, traps, &bounds);
++ if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2)
++ return;
++ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
++ bounds.x2 - bounds.x1,
++ bounds.y2 - bounds.y1);
++ if (!pPicture)
++ return;
++ for (; ntrap; ntrap--, traps++)
++ (*ps->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->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->pDrawable->pScreen;
++ PictureScreenPtr ps = GetPictureScreen(pScreen);
++
++ /*
++ * Check for solid alpha add
++ */
++ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
++ {
++ (*ps->AddTriangles) (pDst, 0, 0, ntri, tris);
++ }
++ else if (maskFormat)
++ {
++ BoxRec bounds;
++ PicturePtr pPicture;
++ INT16 xDst, yDst;
++ INT16 xRel, yRel;
++
++ xDst = tris[0].p1.x >> 16;
++ yDst = tris[0].p1.y >> 16;
++
++ miTriangleBounds (ntri, tris, &bounds);
++ if (bounds.x2 <= bounds.x1 || bounds.y2 <= bounds.y1)
++ return;
++ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
++ bounds.x2 - bounds.x1,
++ bounds.y2 - bounds.y1);
++ if (!pPicture)
++ return;
++ (*ps->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->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.0.1
+
Deleted: trunk/dports/x11/xorg-server/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,316 +0,0 @@
-From eb871812950497a7d11a3cf1ee0e7427813c7ffb Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston <jeremyhu at apple.com>
-Date: Fri, 12 Feb 2010 19:48:52 -0800
-Subject: [PATCH 5002/5004] fb: Revert fb changes that broke XQuartz
-
-http://bugs.freedesktop.org/show_bug.cgi?id=26124
-
-Revert "Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5."
-Revert "fb: Adjust transform or composite coordinates for pixman operations"
-
-http://bugs.freedesktop.org/26124
-
-This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
-This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
-
-Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
----
- 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 26957df..1c6963f 100644
---- a/fb/fb.h
-+++ b/fb/fb.h
-@@ -1652,8 +1652,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 b503858..7c2ead5 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, &src_xoff, &src_yoff);
-- mask = image_from_pict(pMask, FALSE, &msk_xoff, &msk_yoff);
-- dest = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
-+ src = image_from_pict(pSrc, TRUE);
-+ mask = image_from_pict(pMask, TRUE);
-+ dest = image_from_pict(pDst, TRUE);
-
- if (src && dest && !(pMask && !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->pDrawable, pixmap, *xoff, *yoff);
-- fbGetPixmapBitsData(pixmap, bits, stride, bpp);
-+ fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
-+
-+ bits = (FbBits*)((CARD8*)bits +
-+ (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
-+ (pict->pDrawable->x + xoff) * (bpp / 8));
-
- image = pixman_image_create_bits((pixman_format_code_t) pict->format,
-- pixmap->drawable.width,
-- pixmap->drawable.height, (uint32_t *) bits,
-+ pict->pDrawable->width,
-+ pict->pDrawable->height, (uint32_t *) bits,
- stride * sizeof(FbStride));
-
- if (!image)
-@@ -329,57 +326,31 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
- if (pict->clientClipType != CT_NONE)
- pixman_image_set_has_client_clip(image, TRUE);
-
-- if (*xoff || *yoff)
-- pixman_region_translate(pict->pCompositeClip, *xoff, *yoff);
-+ pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
-
- pixman_image_set_clip_region(image, pict->pCompositeClip);
-
-- if (*xoff || *yoff)
-- pixman_region_translate(pict->pCompositeClip, -*xoff, -*yoff);
-+ pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
- }
-
- /* Indexed table */
- if (pict->pFormat->index.devPrivate)
- pixman_image_set_indexed(image, pict->pFormat->index.devPrivate);
-
-- /* Add in drawable origin to position within the image */
-- *xoff += pict->pDrawable->x;
-- *yoff += pict->pDrawable->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
--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->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->transform;
-- pixman_transform_translate(&adjusted,
-- NULL,
-- pixman_int_to_fixed(*xoff),
-- pixman_int_to_fixed(*yoff));
-- pixman_image_set_transform(image, &adjusted);
-- *xoff = 0;
-- *yoff = 0;
-- }
-- else
-- pixman_image_set_transform(image, pict->transform);
-+ pixman_image_set_transform(image, pict->transform);
- }
-
- switch (pict->repeatType) {
-@@ -407,10 +378,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
- * as the alpha map for this operation
- */
- if (pict->alphaMap && !is_alpha_map) {
-- int alpha_xoff, alpha_yoff;
- pixman_image_t *alpha_map =
-- image_from_pict_internal(pict->alphaMap, FALSE, &alpha_xoff,
-- &alpha_yoff, TRUE);
-+ image_from_pict_internal(pict->alphaMap, TRUE, TRUE);
-
- pixman_image_set_alpha_map(image, alpha_map, pict->alphaOrigin.x,
- pict->alphaOrigin.y);
-@@ -444,8 +413,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;
-
-@@ -453,7 +421,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
- return NULL;
-
- if (pict->pDrawable) {
-- image = create_bits_picture(pict, has_clip, xoff, yoff);
-+ image = create_bits_picture(pict, has_clip);
- }
- else if (pict->pSourcePict) {
- SourcePict *sp = pict->pSourcePict;
-@@ -471,19 +439,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
- else if (sp->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, &dst_xoff, &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, &dst_xoff, &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, &dst_xoff, &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, &src_xoff, &src_yoff);
-- dst = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
-+ src = image_from_pict(pSrc, FALSE);
-+ dst = image_from_pict(pDst, TRUE);
-
- if (src && dst) {
- pixman_format_code_t format;
-@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,
-
- for (i = 0; i < 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->pDrawable);
---
-1.9.1
-
Modified: trunk/dports/x11/xorg-server/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,212 +1,316 @@
-From 1ab1cd8c2732d33624fc7e72d763836dbffc0d3a Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
-Date: Tue, 18 Dec 2012 01:03:38 -0800
+From f71e2f31e251f314aff23085f59bbbc79522b8d9 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston <jeremyhu at apple.com>
+Date: Fri, 12 Feb 2010 19:48:52 -0800
Subject: [PATCH 5003/5004] fb: Revert fb changes that broke XQuartz
- http://bugs.freedesktop.org/show_bug.cgi?id=26124
+http://bugs.freedesktop.org/show_bug.cgi?id=26124
-Revert "Use new pixman_glyph_cache_t API that will be in pixman 0.28.0"
+Revert "Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5."
+Revert "fb: Adjust transform or composite coordinates for pixman operations"
-This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
+http://bugs.freedesktop.org/26124
+
+This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
+This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
---
- fb/fb.h | 3 --
- fb/fbpict.c | 149 +---------------------------------------------------------
- fb/fbscreen.c | 1 -
- 3 files changed, 1 insertion(+), 152 deletions(-)
+ 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 1c6963f..11e6344 100644
+index 9057767..f584154 100644
--- a/fb/fb.h
+++ b/fb/fb.h
-@@ -1310,9 +1310,6 @@ extern _X_EXPORT void
- extern _X_EXPORT Bool
- fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
+@@ -1652,8 +1652,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
+ RegionPtr pRegion, FbBits and, FbBits xor);
--extern _X_EXPORT void
--fbDestroyGlyphCache(void);
--
- /*
- * fbpixmap.c
- */
+ 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 7c2ead5..dc0ca3c 100644
+index 65eb2a4..e7a3811 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
-@@ -65,152 +65,6 @@ fbComposite(CARD8 op,
- free_pixman_pict(pDst, dest);
+@@ -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, &src_xoff, &src_yoff);
+- mask = image_from_pict(pMask, FALSE, &msk_xoff, &msk_yoff);
+- dest = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
++ src = image_from_pict(pSrc, TRUE);
++ mask = image_from_pict(pMask, TRUE);
++ dest = image_from_pict(pDst, TRUE);
+
+ if (src && dest && !(pMask && !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_glyph_cache_t *glyphCache;
+ 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->pDrawable, pixmap, *xoff, *yoff);
+- fbGetPixmapBitsData(pixmap, bits, stride, bpp);
++ fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
++
++ bits = (FbBits*)((CARD8*)bits +
++ (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
++ (pict->pDrawable->x + xoff) * (bpp / 8));
+
+ image = pixman_image_create_bits((pixman_format_code_t) pict->format,
+- pixmap->drawable.width,
+- pixmap->drawable.height, (uint32_t *) bits,
++ pict->pDrawable->width,
++ pict->pDrawable->height, (uint32_t *) bits,
+ stride * sizeof(FbStride));
+
+ if (!image)
+@@ -329,57 +326,31 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+ if (pict->clientClipType != CT_NONE)
+ pixman_image_set_has_client_clip(image, TRUE);
+
+- if (*xoff || *yoff)
+- pixman_region_translate(pict->pCompositeClip, *xoff, *yoff);
++ pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
+
+ pixman_image_set_clip_region(image, pict->pCompositeClip);
+
+- if (*xoff || *yoff)
+- pixman_region_translate(pict->pCompositeClip, -*xoff, -*yoff);
++ pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
+ }
+
+ /* Indexed table */
+ if (pict->pFormat->index.devPrivate)
+ pixman_image_set_indexed(image, pict->pFormat->index.devPrivate);
+
+- /* Add in drawable origin to position within the image */
+- *xoff += pict->pDrawable->x;
+- *yoff += pict->pDrawable->y;
-
--void
--fbDestroyGlyphCache(void)
--{
-- if (glyphCache)
-- {
-- pixman_glyph_cache_destroy (glyphCache);
-- glyphCache = NULL;
-- }
--}
+ 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
+-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->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;
-
--static void
--fbUnrealizeGlyph(ScreenPtr pScreen,
-- GlyphPtr pGlyph)
--{
-- if (glyphCache)
-- pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
--}
+- adjusted = *pict->transform;
+- pixman_transform_translate(&adjusted,
+- NULL,
+- pixman_int_to_fixed(*xoff),
+- pixman_int_to_fixed(*yoff));
+- pixman_image_set_transform(image, &adjusted);
+- *xoff = 0;
+- *yoff = 0;
+- }
+- else
+- pixman_image_set_transform(image, pict->transform);
++ pixman_image_set_transform(image, pict->transform);
+ }
+
+ switch (pict->repeatType) {
+@@ -407,10 +378,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+ * as the alpha map for this operation
+ */
+ if (pict->alphaMap && !is_alpha_map) {
+- int alpha_xoff, alpha_yoff;
+ pixman_image_t *alpha_map =
+- image_from_pict_internal(pict->alphaMap, FALSE, &alpha_xoff,
+- &alpha_yoff, TRUE);
++ image_from_pict_internal(pict->alphaMap, TRUE, TRUE);
+
+ pixman_image_set_alpha_map(image, alpha_map, pict->alphaOrigin.x,
+ pict->alphaOrigin.y);
+@@ -444,8 +413,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;
+
+@@ -453,7 +421,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+ return NULL;
+
+ if (pict->pDrawable) {
+- image = create_bits_picture(pict, has_clip, xoff, yoff);
++ image = create_bits_picture(pict, has_clip);
+ }
+ else if (pict->pSourcePict) {
+ SourcePict *sp = pict->pSourcePict;
+@@ -471,19 +439,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+ else if (sp->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);
-
--static 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->pDrawable->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->xOff, yDst = list->yOff;
++ 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, &dst_xoff, &dst_yoff)))
+- return;
-
-- miCompositeSourceValidate(pSrc);
--
-- n_glyphs = 0;
-- for (i = 0; i < nlist; ++i)
-- n_glyphs += list[i].len;
+- 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, &dst_xoff, &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, &dst_xoff, &dst_yoff)))
++ if (!(image = image_from_pict (pPicture, FALSE)))
+ return;
-
-- if (!glyphCache)
-- glyphCache = pixman_glyph_cache_create();
--
-- pixman_glyph_cache_freeze (glyphCache);
--
-- if (n_glyphs > N_STACK_GLYPHS) {
-- if (!(pglyphs = malloc (n_glyphs * sizeof (pixman_glyph_t))))
-- goto out;
-- }
--
-- i = 0;
-- x = y = 0;
-- while (nlist--) {
-- x += list->xOff;
-- y += list->yOff;
-- n = list->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, &xoff, &yoff)))
-- goto out;
--
-- g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
-- glyph->info.x,
-- glyph->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->info.xOff;
-- y += glyph->info.yOff;
-- }
-- list++;
-- }
--
-- if (!(srcImage = image_from_pict(pSrc, FALSE, &srcXoff, &srcYoff)))
-- goto out;
--
-- if (!(dstImage = image_from_pict(pDst, TRUE, &dstXoff, &dstYoff)))
-- goto out_free_src;
--
-- if (maskFormat) {
-- pixman_format_code_t format;
-- pixman_box32_t extents;
--
-- format = maskFormat->format | (maskFormat->depth << 24);
--
-- pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &extents);
--
-- pixman_composite_glyphs(op, srcImage, dstImage, format,
-- xSrc + srcXoff + xDst, ySrc + srcYoff + 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)
+- 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)
{
-@@ -469,8 +323,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
- return FALSE;
- ps = GetPictureScreen(pScreen);
- ps->Composite = fbComposite;
-- ps->Glyphs = fbGlyphs;
-- ps->UnrealizeGlyph = fbUnrealizeGlyph;
-+ ps->Glyphs = miGlyphs;
- ps->CompositeRects = miCompositeRects;
- ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
- ps->Trapezoids = fbTrapezoids;
-diff --git a/fb/fbscreen.c b/fb/fbscreen.c
-index f9080a4..7c7d656 100644
---- a/fb/fbscreen.c
-+++ b/fb/fbscreen.c
-@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
- int d;
- DepthPtr depths = pScreen->allowedDepths;
+ pixman_image_t *src, *dst;
+- int src_xoff, src_yoff;
+- int dst_xoff, dst_yoff;
-- fbDestroyGlyphCache();
- for (d = 0; d < pScreen->numDepths; d++)
- free(depths[d].vids);
- free(depths);
+ miCompositeSourceValidate(pSrc);
+
+- src = image_from_pict(pSrc, FALSE, &src_xoff, &src_yoff);
+- dst = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
++ src = image_from_pict(pSrc, FALSE);
++ dst = image_from_pict(pDst, TRUE);
+
+ if (src && dst) {
+ pixman_format_code_t format;
+@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,
+
+ for (i = 0; i < 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->pDrawable);
--
-1.9.1
+2.0.1
Deleted: trunk/dports/x11/xorg-server/files/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch
===================================================================
--- trunk/dports/x11/xorg-server/files/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server/files/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,297 +0,0 @@
-From 0b41adb9994696d40ef1ce66b5c70d867581f8a9 Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
-Date: Sat, 2 Nov 2013 11:00:23 -0700
-Subject: [PATCH 5004/5004] Use old miTrapezoids and miTriangles routines
-
-Reverts commits:
- 788ccb9a8bcf6a4fb4054c507111eec3338fb969
- 566f1931ee2916269e164e114bffaf2da1d039d1
-
-http://xquartz.macosforge.org/trac/ticket/525
-
-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
----
- 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 dc0ca3c..276ff06 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -326,10 +326,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
- ps->Glyphs = miGlyphs;
- ps->CompositeRects = miCompositeRects;
- ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
-- ps->Trapezoids = fbTrapezoids;
- ps->AddTraps = fbAddTraps;
- ps->AddTriangles = fbAddTriangles;
-- ps->Triangles = fbTriangles;
-
- return TRUE;
- }
-diff --git a/render/mipict.c b/render/mipict.c
-index 2e64b20..d21b58a 100644
---- a/render/mipict.c
-+++ b/render/mipict.c
-@@ -595,8 +595,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
- ps->Composite = 0; /* requires DDX support */
- ps->Glyphs = miGlyphs;
- ps->CompositeRects = miCompositeRects;
-- ps->Trapezoids = 0;
-- ps->Triangles = 0;
-+ ps->Trapezoids = miTrapezoids;
-+ ps->Triangles = miTriangles;
-
- ps->RasterizeTrapezoid = 0; /* requires DDX support */
- ps->AddTraps = 0; /* requires DDX support */
-diff --git a/render/mipict.h b/render/mipict.h
-index 9436228..7ee2991 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 "picturestr.h"
- #include "mipict.h"
-
-+PicturePtr
-+miCreateAlphaPicture (ScreenPtr pScreen,
-+ PicturePtr pDst,
-+ PictFormatPtr pPictFormat,
-+ CARD16 width,
-+ CARD16 height)
-+{
-+ PixmapPtr pPixmap;
-+ PicturePtr pPicture;
-+ GCPtr pGC;
-+ int error;
-+ xRectangle rect;
-+
-+ if (width > 32767 || height > 32767)
-+ return 0;
-+
-+ if (!pPictFormat)
-+ {
-+ if (pDst->polyEdge == PolyEdgeSharp)
-+ pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
-+ else
-+ pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
-+ if (!pPictFormat)
-+ return 0;
-+ }
-+
-+ pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height,
-+ pPictFormat->depth, 0);
-+ if (!pPixmap)
-+ return 0;
-+ pGC = GetScratchGC (pPixmap->drawable.depth, pScreen);
-+ if (!pGC)
-+ {
-+ (*pScreen->DestroyPixmap) (pPixmap);
-+ return 0;
-+ }
-+ ValidateGC (&pPixmap->drawable, pGC);
-+ rect.x = 0;
-+ rect.y = 0;
-+ rect.width = width;
-+ rect.height = height;
-+ (*pGC->ops->PolyFillRect)(&pPixmap->drawable, pGC, 1, &rect);
-+ FreeScratchGC (pGC);
-+ pPicture = CreatePicture (0, &pPixmap->drawable, pPictFormat,
-+ 0, 0, serverClient, &error);
-+ (*pScreen->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->x2 = x2;
- }
- }
-+
-+
-+void
-+miTrapezoids (CARD8 op,
-+ PicturePtr pSrc,
-+ PicturePtr pDst,
-+ PictFormatPtr maskFormat,
-+ INT16 xSrc,
-+ INT16 ySrc,
-+ int ntrap,
-+ xTrapezoid *traps)
-+{
-+ ScreenPtr pScreen = pDst->pDrawable->pScreen;
-+ PictureScreenPtr ps = GetPictureScreen(pScreen);
-+
-+ /*
-+ * Check for solid alpha add
-+ */
-+ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
-+ {
-+ for (; ntrap; ntrap--, traps++)
-+ (*ps->RasterizeTrapezoid) (pDst, traps, 0, 0);
-+ }
-+ else if (maskFormat)
-+ {
-+ PicturePtr pPicture;
-+ BoxRec bounds;
-+ INT16 xDst, yDst;
-+ INT16 xRel, yRel;
-+
-+ xDst = traps[0].left.p1.x >> 16;
-+ yDst = traps[0].left.p1.y >> 16;
-+
-+ miTrapezoidBounds (ntrap, traps, &bounds);
-+ if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2)
-+ return;
-+ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
-+ bounds.x2 - bounds.x1,
-+ bounds.y2 - bounds.y1);
-+ if (!pPicture)
-+ return;
-+ for (; ntrap; ntrap--, traps++)
-+ (*ps->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->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->pDrawable->pScreen;
-+ PictureScreenPtr ps = GetPictureScreen(pScreen);
-+
-+ /*
-+ * Check for solid alpha add
-+ */
-+ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
-+ {
-+ (*ps->AddTriangles) (pDst, 0, 0, ntri, tris);
-+ }
-+ else if (maskFormat)
-+ {
-+ BoxRec bounds;
-+ PicturePtr pPicture;
-+ INT16 xDst, yDst;
-+ INT16 xRel, yRel;
-+
-+ xDst = tris[0].p1.x >> 16;
-+ yDst = tris[0].p1.y >> 16;
-+
-+ miTriangleBounds (ntri, tris, &bounds);
-+ if (bounds.x2 <= bounds.x1 || bounds.y2 <= bounds.y1)
-+ return;
-+ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
-+ bounds.x2 - bounds.x1,
-+ bounds.y2 - bounds.y1);
-+ if (!pPicture)
-+ return;
-+ (*ps->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->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);
-+ }
-+}
-+
---
-1.9.1
-
Added: trunk/dports/x11/xorg-server/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
===================================================================
--- 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 2014-07-20 00:21:23 UTC (rev 122294)
@@ -0,0 +1,247 @@
+From bccceaa79183e23d7a3c60f36acd537e2f0d6564 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+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 "Use new pixman_glyph_cache_t API that will be in pixman 0.28.0"
+Revert "fb: Fix origin of source picture in fbGlyphs"
+Revert "fb: Publish fbGlyphs and fbUnrealizeGlyph"
+
+This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
+This reverts commit 983e30361f49a67252d0b5d82630e70724d69dbf.
+This reverts commit 3c2c59eed3c68c0e5a93c38cf01eedad015e3157.
+---
+ fb/fb.h | 3 --
+ fb/fbpict.c | 149 +---------------------------------------------------------
+ fb/fbpict.h | 15 +-----
+ fb/fbscreen.c | 1 -
+ 4 files changed, 2 insertions(+), 166 deletions(-)
+
+diff --git a/fb/fb.h b/fb/fb.h
+index f584154..25a7eff 100644
+--- a/fb/fb.h
++++ b/fb/fb.h
+@@ -1310,9 +1310,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 e7a3811..276ff06 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;
+- }
+-}
+-
+-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->pDrawable->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->xOff, yDst = list->yOff;
+-
+- miCompositeSourceValidate(pSrc);
+-
+- n_glyphs = 0;
+- for (i = 0; i < nlist; ++i)
+- n_glyphs += list[i].len;
+-
+- if (!glyphCache)
+- glyphCache = pixman_glyph_cache_create();
+-
+- pixman_glyph_cache_freeze (glyphCache);
+-
+- if (n_glyphs > N_STACK_GLYPHS) {
+- if (!(pglyphs = malloc (n_glyphs * sizeof (pixman_glyph_t))))
+- goto out;
+- }
+-
+- i = 0;
+- x = y = 0;
+- while (nlist--) {
+- x += list->xOff;
+- y += list->yOff;
+- n = list->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, &xoff, &yoff)))
+- goto out;
+-
+- g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
+- glyph->info.x,
+- glyph->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->info.xOff;
+- y += glyph->info.yOff;
+- }
+- list++;
+- }
+-
+- if (!(srcImage = image_from_pict(pSrc, FALSE, &srcXoff, &srcYoff)))
+- goto out;
+-
+- if (!(dstImage = image_from_pict(pDst, TRUE, &dstXoff, &dstYoff)))
+- goto out_free_src;
+-
+- if (maskFormat) {
+- pixman_format_code_t format;
+- pixman_box32_t extents;
+-
+- format = maskFormat->format | (maskFormat->depth << 24);
+-
+- pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &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)
+ {
+@@ -469,8 +323,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+ return FALSE;
+ ps = GetPictureScreen(pScreen);
+ ps->Composite = fbComposite;
+- ps->Glyphs = fbGlyphs;
+- ps->UnrealizeGlyph = fbUnrealizeGlyph;
++ ps->Glyphs = miGlyphs;
+ ps->CompositeRects = miCompositeRects;
+ ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
+ ps->AddTraps = fbAddTraps;
+diff --git a/fb/fbpict.h b/fb/fbpict.h
+index 8b0f59f..110f32d 100644
+--- a/fb/fbpict.h
++++ b/fb/fbpict.h
+@@ -65,24 +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
+-fbUnrealizeGlyph(ScreenPtr pScreen,
+- GlyphPtr pGlyph);
+-
+-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 0d4d87f..e6ff1bd 100644
+--- a/fb/fbscreen.c
++++ b/fb/fbscreen.c
+@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
+ int d;
+ DepthPtr depths = pScreen->allowedDepths;
+
+- fbDestroyGlyphCache();
+ for (d = 0; d < pScreen->numDepths; d++)
+ free(depths[d].vids);
+ free(depths);
+--
+2.0.1
+
Modified: trunk/dports/x11/xorg-server-devel/Portfile
===================================================================
--- trunk/dports/x11/xorg-server-devel/Portfile 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server-devel/Portfile 2014-07-20 00:21:23 UTC (rev 122294)
@@ -5,7 +5,7 @@
name xorg-server-devel
conflicts xorg-server
set my_name xorg-server
-version 1.15.1
+version 1.16.99.1
categories x11 devel
license X11
maintainers jeremyhu openmaintainer
@@ -16,7 +16,7 @@
fetch.type git
git.url git://anongit.freedesktop.org/xorg/xserver
-git.branch 7b3aa3f0be8d1334dbf23bd04258a8856a4329c7
+git.branch cff12936275db2f71f6d24f9ea0985a0d14af454
use_parallel_build yes
@@ -80,11 +80,12 @@
RAWCPP=${configure.cpp}
patchfiles \
+ 0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch \
5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch \
5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch \
- 5002-fb-Revert-fb-changes-that-broke-XQuartz.patch \
+ 5002-Use-old-miTrapezoids-and-miTriangles-routines.patch \
5003-fb-Revert-fb-changes-that-broke-XQuartz.patch \
- 5004-Use-old-miTrapezoids-and-miTriangles-routines.patch
+ 5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
patch.pre_args -p1
Added: trunk/dports/x11/xorg-server-devel/files/0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0001-mieq-Fix-a-crash-regression-in-mieqProcessDeviceEven.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -0,0 +1,43 @@
+From 07389f7dc7504bcd3892b1031446fd3eb2573c7c Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+Date: Sat, 19 Jul 2014 17:08:09 -0700
+Subject: [PATCH] mieq: Fix a crash regression in mieqProcessDeviceEvent
+
+(lldb) bt
+* thread #6: tid = 0x92d4eb, 0x00000001001dee94 X11.bin`mieqProcessDeviceEvent(dev=0x0000000000000000, event=0x0000000100298bb0,
+screen=0x0000000000000000) + 36 at mieq.c:519, stop reason = EXC_BAD_ACCESS (code=1, address=0x44)
+ * frame #0: 0x00000001001dee94 X11.bin`mieqProcessDeviceEvent(dev=0x0000000000000000, event=0x0000000100298bb0, screen=0x0000000000000000) + 36 at
+mieq.c:519
+ frame #1: 0x00000001001df3eb X11.bin`mieqProcessInputEvents + 555 at mieq.c:631
+ frame #2: 0x0000000100017674 X11.bin`ProcessInputEvents + 20 at darwinEvents.c:422
+ frame #3: 0x0000000100175eaa X11.bin`Dispatch + 154 at dispatch.c:357
+ frame #4: 0x0000000100181b4a X11.bin`dix_main(argc=4, argv=0x00007fff5fbff750, envp=0x00007fff5fbff650) + 1594 at main.c:296
+ frame #5: 0x000000010001ba80 X11.bin`server_thread(arg=0x0000000101208220) + 64 at quartzStartup.c:66
+ frame #6: 0x00007fff89bb9899 libsystem_pthread.dylib`_pthread_body + 138
+ frame #7: 0x00007fff89bb972a libsystem_pthread.dylib`_pthread_start + 137
+ frame #8: 0x00007fff89bbdfc9 libsystem_pthread.dylib`thread_start + 13
+
+Regression from: 9fb08310b51b46736f3ca8dbc04efdf502420403
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+CC: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ mi/mieq.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mi/mieq.c b/mi/mieq.c
+index 872ff93..aced60d 100644
+--- a/mi/mieq.c
++++ b/mi/mieq.c
+@@ -516,7 +516,7 @@ mieqProcessDeviceEvent(DeviceIntPtr dev, InternalEvent *event, ScreenPtr screen)
+ verify_internal_event(event);
+
+ /* refuse events from disabled devices */
+- if (!dev->enabled)
++ if (!dev || !dev->enabled)
+ return;
+
+ /* Custom event handler */
+--
+2.0.1
+
Modified: trunk/dports/x11/xorg-server-devel/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server-devel/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,4 +1,4 @@
-From b877aca8da4fec52875cbf03646ffad0ffd31ae1 Mon Sep 17 00:00:00 2001
+From f2126ef96002eda432e1974f14a914dc075ef017 Mon Sep 17 00:00:00 2001
From: Jeremy Huddleston <jeremyhu at apple.com>
Date: Fri, 13 Jan 2012 12:00:57 -0800
Subject: [PATCH 5000/5004] sdksyms.sh: Use CPPFLAGS, not CFLAGS
@@ -14,10 +14,10 @@
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
-index 15670d0..b35e464 100644
+index c5992c3..71b6769 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
-@@ -43,8 +43,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
+@@ -48,8 +48,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
bin_PROGRAMS = Xorg
nodist_Xorg_SOURCES = sdksyms.c
@@ -27,7 +27,7 @@
-I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
-I$(srcdir)/dri -I$(srcdir)/dri2 -I$(top_srcdir)/dri3
-@@ -118,7 +117,7 @@ CLEANFILES = sdksyms.c sdksyms.dep
+@@ -135,7 +134,7 @@ CLEANFILES = sdksyms.c sdksyms.dep Xorg.sh
EXTRA_DIST += sdksyms.sh
sdksyms.dep sdksyms.c: sdksyms.sh
@@ -35,7 +35,7 @@
+ $(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CPPFLAGS) $(AM_CPPFLAGS)
SDKSYMS_DEP = sdksyms.dep
- include $(SDKSYMS_DEP)
+ -include $(SDKSYMS_DEP)
--
-1.9.1
+2.0.1
Modified: trunk/dports/x11/xorg-server-devel/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server-devel/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,4 +1,4 @@
-From 152a52f607d68c65683eebc61cbb288ec2670b2a Mon Sep 17 00:00:00 2001
+From 2f09ff191ef3a03a992d15f6f8176db0892d32f4 Mon Sep 17 00:00:00 2001
From: Jeremy Huddleston <jeremyhu at apple.com>
Date: Fri, 30 Apr 2010 13:08:25 -0700
Subject: [PATCH 5001/5004] Workaround the GC clipping problem in miPaintWindow
@@ -10,7 +10,7 @@
1 file changed, 94 insertions(+), 10 deletions(-)
diff --git a/mi/miexpose.c b/mi/miexpose.c
-index 8b7c93f..3e972f7 100644
+index 198c433..ad1621d 100644
--- a/mi/miexpose.c
+++ b/mi/miexpose.c
@@ -489,7 +489,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
@@ -161,5 +161,5 @@
pbox = RegionRects(prgn);
for (i = numRects; --i >= 0; pbox++, prect++) {
--
-1.9.1
+2.0.1
Added: trunk/dports/x11/xorg-server-devel/files/5002-Use-old-miTrapezoids-and-miTriangles-routines.patch
===================================================================
--- 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 2014-07-20 00:21:23 UTC (rev 122294)
@@ -0,0 +1,297 @@
+From 8a899939a369a04a31d5c1d118079845890127d4 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+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 <jeremyhu at apple.com>
+---
+ 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 21baf89..65eb2a4 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -507,10 +507,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+ ps->UnrealizeGlyph = fbUnrealizeGlyph;
+ ps->CompositeRects = miCompositeRects;
+ ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
+- ps->Trapezoids = fbTrapezoids;
+ ps->AddTraps = fbAddTraps;
+ ps->AddTriangles = fbAddTriangles;
+- ps->Triangles = fbTriangles;
+
+ return TRUE;
+ }
+diff --git a/render/mipict.c b/render/mipict.c
+index 3959fc4..2bb1a1d 100644
+--- a/render/mipict.c
++++ b/render/mipict.c
+@@ -595,8 +595,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+ ps->Composite = 0; /* requires DDX support */
+ ps->Glyphs = miGlyphs;
+ ps->CompositeRects = miCompositeRects;
+- ps->Trapezoids = 0;
+- ps->Triangles = 0;
++ ps->Trapezoids = miTrapezoids;
++ ps->Triangles = miTriangles;
+
+ ps->RasterizeTrapezoid = 0; /* requires DDX support */
+ ps->AddTraps = 0; /* requires DDX support */
+diff --git a/render/mipict.h b/render/mipict.h
+index a16dd31..ee90b58 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 "picturestr.h"
+ #include "mipict.h"
+
++PicturePtr
++miCreateAlphaPicture (ScreenPtr pScreen,
++ PicturePtr pDst,
++ PictFormatPtr pPictFormat,
++ CARD16 width,
++ CARD16 height)
++{
++ PixmapPtr pPixmap;
++ PicturePtr pPicture;
++ GCPtr pGC;
++ int error;
++ xRectangle rect;
++
++ if (width > 32767 || height > 32767)
++ return 0;
++
++ if (!pPictFormat)
++ {
++ if (pDst->polyEdge == PolyEdgeSharp)
++ pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++ else
++ pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++ if (!pPictFormat)
++ return 0;
++ }
++
++ pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height,
++ pPictFormat->depth, 0);
++ if (!pPixmap)
++ return 0;
++ pGC = GetScratchGC (pPixmap->drawable.depth, pScreen);
++ if (!pGC)
++ {
++ (*pScreen->DestroyPixmap) (pPixmap);
++ return 0;
++ }
++ ValidateGC (&pPixmap->drawable, pGC);
++ rect.x = 0;
++ rect.y = 0;
++ rect.width = width;
++ rect.height = height;
++ (*pGC->ops->PolyFillRect)(&pPixmap->drawable, pGC, 1, &rect);
++ FreeScratchGC (pGC);
++ pPicture = CreatePicture (0, &pPixmap->drawable, pPictFormat,
++ 0, 0, serverClient, &error);
++ (*pScreen->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->x2 = x2;
+ }
+ }
++
++
++void
++miTrapezoids (CARD8 op,
++ PicturePtr pSrc,
++ PicturePtr pDst,
++ PictFormatPtr maskFormat,
++ INT16 xSrc,
++ INT16 ySrc,
++ int ntrap,
++ xTrapezoid *traps)
++{
++ ScreenPtr pScreen = pDst->pDrawable->pScreen;
++ PictureScreenPtr ps = GetPictureScreen(pScreen);
++
++ /*
++ * Check for solid alpha add
++ */
++ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
++ {
++ for (; ntrap; ntrap--, traps++)
++ (*ps->RasterizeTrapezoid) (pDst, traps, 0, 0);
++ }
++ else if (maskFormat)
++ {
++ PicturePtr pPicture;
++ BoxRec bounds;
++ INT16 xDst, yDst;
++ INT16 xRel, yRel;
++
++ xDst = traps[0].left.p1.x >> 16;
++ yDst = traps[0].left.p1.y >> 16;
++
++ miTrapezoidBounds (ntrap, traps, &bounds);
++ if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2)
++ return;
++ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
++ bounds.x2 - bounds.x1,
++ bounds.y2 - bounds.y1);
++ if (!pPicture)
++ return;
++ for (; ntrap; ntrap--, traps++)
++ (*ps->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->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->pDrawable->pScreen;
++ PictureScreenPtr ps = GetPictureScreen(pScreen);
++
++ /*
++ * Check for solid alpha add
++ */
++ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
++ {
++ (*ps->AddTriangles) (pDst, 0, 0, ntri, tris);
++ }
++ else if (maskFormat)
++ {
++ BoxRec bounds;
++ PicturePtr pPicture;
++ INT16 xDst, yDst;
++ INT16 xRel, yRel;
++
++ xDst = tris[0].p1.x >> 16;
++ yDst = tris[0].p1.y >> 16;
++
++ miTriangleBounds (ntri, tris, &bounds);
++ if (bounds.x2 <= bounds.x1 || bounds.y2 <= bounds.y1)
++ return;
++ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
++ bounds.x2 - bounds.x1,
++ bounds.y2 - bounds.y1);
++ if (!pPicture)
++ return;
++ (*ps->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->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.0.1
+
Deleted: trunk/dports/x11/xorg-server-devel/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server-devel/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,316 +0,0 @@
-From eb871812950497a7d11a3cf1ee0e7427813c7ffb Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston <jeremyhu at apple.com>
-Date: Fri, 12 Feb 2010 19:48:52 -0800
-Subject: [PATCH 5002/5004] fb: Revert fb changes that broke XQuartz
-
-http://bugs.freedesktop.org/show_bug.cgi?id=26124
-
-Revert "Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5."
-Revert "fb: Adjust transform or composite coordinates for pixman operations"
-
-http://bugs.freedesktop.org/26124
-
-This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
-This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
-
-Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
----
- 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 26957df..1c6963f 100644
---- a/fb/fb.h
-+++ b/fb/fb.h
-@@ -1652,8 +1652,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 b503858..7c2ead5 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, &src_xoff, &src_yoff);
-- mask = image_from_pict(pMask, FALSE, &msk_xoff, &msk_yoff);
-- dest = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
-+ src = image_from_pict(pSrc, TRUE);
-+ mask = image_from_pict(pMask, TRUE);
-+ dest = image_from_pict(pDst, TRUE);
-
- if (src && dest && !(pMask && !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->pDrawable, pixmap, *xoff, *yoff);
-- fbGetPixmapBitsData(pixmap, bits, stride, bpp);
-+ fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
-+
-+ bits = (FbBits*)((CARD8*)bits +
-+ (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
-+ (pict->pDrawable->x + xoff) * (bpp / 8));
-
- image = pixman_image_create_bits((pixman_format_code_t) pict->format,
-- pixmap->drawable.width,
-- pixmap->drawable.height, (uint32_t *) bits,
-+ pict->pDrawable->width,
-+ pict->pDrawable->height, (uint32_t *) bits,
- stride * sizeof(FbStride));
-
- if (!image)
-@@ -329,57 +326,31 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
- if (pict->clientClipType != CT_NONE)
- pixman_image_set_has_client_clip(image, TRUE);
-
-- if (*xoff || *yoff)
-- pixman_region_translate(pict->pCompositeClip, *xoff, *yoff);
-+ pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
-
- pixman_image_set_clip_region(image, pict->pCompositeClip);
-
-- if (*xoff || *yoff)
-- pixman_region_translate(pict->pCompositeClip, -*xoff, -*yoff);
-+ pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
- }
-
- /* Indexed table */
- if (pict->pFormat->index.devPrivate)
- pixman_image_set_indexed(image, pict->pFormat->index.devPrivate);
-
-- /* Add in drawable origin to position within the image */
-- *xoff += pict->pDrawable->x;
-- *yoff += pict->pDrawable->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
--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->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->transform;
-- pixman_transform_translate(&adjusted,
-- NULL,
-- pixman_int_to_fixed(*xoff),
-- pixman_int_to_fixed(*yoff));
-- pixman_image_set_transform(image, &adjusted);
-- *xoff = 0;
-- *yoff = 0;
-- }
-- else
-- pixman_image_set_transform(image, pict->transform);
-+ pixman_image_set_transform(image, pict->transform);
- }
-
- switch (pict->repeatType) {
-@@ -407,10 +378,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
- * as the alpha map for this operation
- */
- if (pict->alphaMap && !is_alpha_map) {
-- int alpha_xoff, alpha_yoff;
- pixman_image_t *alpha_map =
-- image_from_pict_internal(pict->alphaMap, FALSE, &alpha_xoff,
-- &alpha_yoff, TRUE);
-+ image_from_pict_internal(pict->alphaMap, TRUE, TRUE);
-
- pixman_image_set_alpha_map(image, alpha_map, pict->alphaOrigin.x,
- pict->alphaOrigin.y);
-@@ -444,8 +413,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;
-
-@@ -453,7 +421,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
- return NULL;
-
- if (pict->pDrawable) {
-- image = create_bits_picture(pict, has_clip, xoff, yoff);
-+ image = create_bits_picture(pict, has_clip);
- }
- else if (pict->pSourcePict) {
- SourcePict *sp = pict->pSourcePict;
-@@ -471,19 +439,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
- else if (sp->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, &dst_xoff, &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, &dst_xoff, &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, &dst_xoff, &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, &src_xoff, &src_yoff);
-- dst = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
-+ src = image_from_pict(pSrc, FALSE);
-+ dst = image_from_pict(pDst, TRUE);
-
- if (src && dst) {
- pixman_format_code_t format;
-@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,
-
- for (i = 0; i < 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->pDrawable);
---
-1.9.1
-
Modified: trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,212 +1,316 @@
-From 1ab1cd8c2732d33624fc7e72d763836dbffc0d3a Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
-Date: Tue, 18 Dec 2012 01:03:38 -0800
+From f71e2f31e251f314aff23085f59bbbc79522b8d9 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston <jeremyhu at apple.com>
+Date: Fri, 12 Feb 2010 19:48:52 -0800
Subject: [PATCH 5003/5004] fb: Revert fb changes that broke XQuartz
- http://bugs.freedesktop.org/show_bug.cgi?id=26124
+http://bugs.freedesktop.org/show_bug.cgi?id=26124
-Revert "Use new pixman_glyph_cache_t API that will be in pixman 0.28.0"
+Revert "Fix source pictures getting random transforms after 2d6a8f668342a5190cdf43b5."
+Revert "fb: Adjust transform or composite coordinates for pixman operations"
-This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
+http://bugs.freedesktop.org/26124
+
+This reverts commit a72c65e9176c51de95db2fdbf4c5d946a4911695.
+This reverts commit a6bd5d2e482a5aa84acb3d4932e2a166d8670ef1.
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
---
- fb/fb.h | 3 --
- fb/fbpict.c | 149 +---------------------------------------------------------
- fb/fbscreen.c | 1 -
- 3 files changed, 1 insertion(+), 152 deletions(-)
+ 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 1c6963f..11e6344 100644
+index 9057767..f584154 100644
--- a/fb/fb.h
+++ b/fb/fb.h
-@@ -1310,9 +1310,6 @@ extern _X_EXPORT void
- extern _X_EXPORT Bool
- fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
+@@ -1652,8 +1652,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
+ RegionPtr pRegion, FbBits and, FbBits xor);
--extern _X_EXPORT void
--fbDestroyGlyphCache(void);
--
- /*
- * fbpixmap.c
- */
+ 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 7c2ead5..dc0ca3c 100644
+index 65eb2a4..e7a3811 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
-@@ -65,152 +65,6 @@ fbComposite(CARD8 op,
- free_pixman_pict(pDst, dest);
+@@ -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, &src_xoff, &src_yoff);
+- mask = image_from_pict(pMask, FALSE, &msk_xoff, &msk_yoff);
+- dest = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
++ src = image_from_pict(pSrc, TRUE);
++ mask = image_from_pict(pMask, TRUE);
++ dest = image_from_pict(pDst, TRUE);
+
+ if (src && dest && !(pMask && !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_glyph_cache_t *glyphCache;
+ 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->pDrawable, pixmap, *xoff, *yoff);
+- fbGetPixmapBitsData(pixmap, bits, stride, bpp);
++ fbGetDrawable (pict->pDrawable, bits, stride, bpp, xoff, yoff);
++
++ bits = (FbBits*)((CARD8*)bits +
++ (pict->pDrawable->y + yoff) * stride * sizeof(FbBits) +
++ (pict->pDrawable->x + xoff) * (bpp / 8));
+
+ image = pixman_image_create_bits((pixman_format_code_t) pict->format,
+- pixmap->drawable.width,
+- pixmap->drawable.height, (uint32_t *) bits,
++ pict->pDrawable->width,
++ pict->pDrawable->height, (uint32_t *) bits,
+ stride * sizeof(FbStride));
+
+ if (!image)
+@@ -329,57 +326,31 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+ if (pict->clientClipType != CT_NONE)
+ pixman_image_set_has_client_clip(image, TRUE);
+
+- if (*xoff || *yoff)
+- pixman_region_translate(pict->pCompositeClip, *xoff, *yoff);
++ pixman_region_translate (pict->pCompositeClip, - pict->pDrawable->x, - pict->pDrawable->y);
+
+ pixman_image_set_clip_region(image, pict->pCompositeClip);
+
+- if (*xoff || *yoff)
+- pixman_region_translate(pict->pCompositeClip, -*xoff, -*yoff);
++ pixman_region_translate (pict->pCompositeClip, pict->pDrawable->x, pict->pDrawable->y);
+ }
+
+ /* Indexed table */
+ if (pict->pFormat->index.devPrivate)
+ pixman_image_set_indexed(image, pict->pFormat->index.devPrivate);
+
+- /* Add in drawable origin to position within the image */
+- *xoff += pict->pDrawable->x;
+- *yoff += pict->pDrawable->y;
-
--void
--fbDestroyGlyphCache(void)
--{
-- if (glyphCache)
-- {
-- pixman_glyph_cache_destroy (glyphCache);
-- glyphCache = NULL;
-- }
--}
+ 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
+-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->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;
-
--static void
--fbUnrealizeGlyph(ScreenPtr pScreen,
-- GlyphPtr pGlyph)
--{
-- if (glyphCache)
-- pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
--}
+- adjusted = *pict->transform;
+- pixman_transform_translate(&adjusted,
+- NULL,
+- pixman_int_to_fixed(*xoff),
+- pixman_int_to_fixed(*yoff));
+- pixman_image_set_transform(image, &adjusted);
+- *xoff = 0;
+- *yoff = 0;
+- }
+- else
+- pixman_image_set_transform(image, pict->transform);
++ pixman_image_set_transform(image, pict->transform);
+ }
+
+ switch (pict->repeatType) {
+@@ -407,10 +378,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+ * as the alpha map for this operation
+ */
+ if (pict->alphaMap && !is_alpha_map) {
+- int alpha_xoff, alpha_yoff;
+ pixman_image_t *alpha_map =
+- image_from_pict_internal(pict->alphaMap, FALSE, &alpha_xoff,
+- &alpha_yoff, TRUE);
++ image_from_pict_internal(pict->alphaMap, TRUE, TRUE);
+
+ pixman_image_set_alpha_map(image, alpha_map, pict->alphaOrigin.x,
+ pict->alphaOrigin.y);
+@@ -444,8 +413,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;
+
+@@ -453,7 +421,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+ return NULL;
+
+ if (pict->pDrawable) {
+- image = create_bits_picture(pict, has_clip, xoff, yoff);
++ image = create_bits_picture(pict, has_clip);
+ }
+ else if (pict->pSourcePict) {
+ SourcePict *sp = pict->pSourcePict;
+@@ -471,19 +439,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+ else if (sp->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);
-
--static 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->pDrawable->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->xOff, yDst = list->yOff;
++ 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, &dst_xoff, &dst_yoff)))
+- return;
-
-- miCompositeSourceValidate(pSrc);
--
-- n_glyphs = 0;
-- for (i = 0; i < nlist; ++i)
-- n_glyphs += list[i].len;
+- 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, &dst_xoff, &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, &dst_xoff, &dst_yoff)))
++ if (!(image = image_from_pict (pPicture, FALSE)))
+ return;
-
-- if (!glyphCache)
-- glyphCache = pixman_glyph_cache_create();
--
-- pixman_glyph_cache_freeze (glyphCache);
--
-- if (n_glyphs > N_STACK_GLYPHS) {
-- if (!(pglyphs = malloc (n_glyphs * sizeof (pixman_glyph_t))))
-- goto out;
-- }
--
-- i = 0;
-- x = y = 0;
-- while (nlist--) {
-- x += list->xOff;
-- y += list->yOff;
-- n = list->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, &xoff, &yoff)))
-- goto out;
--
-- g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
-- glyph->info.x,
-- glyph->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->info.xOff;
-- y += glyph->info.yOff;
-- }
-- list++;
-- }
--
-- if (!(srcImage = image_from_pict(pSrc, FALSE, &srcXoff, &srcYoff)))
-- goto out;
--
-- if (!(dstImage = image_from_pict(pDst, TRUE, &dstXoff, &dstYoff)))
-- goto out_free_src;
--
-- if (maskFormat) {
-- pixman_format_code_t format;
-- pixman_box32_t extents;
--
-- format = maskFormat->format | (maskFormat->depth << 24);
--
-- pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &extents);
--
-- pixman_composite_glyphs(op, srcImage, dstImage, format,
-- xSrc + srcXoff + xDst, ySrc + srcYoff + 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)
+- 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)
{
-@@ -469,8 +323,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
- return FALSE;
- ps = GetPictureScreen(pScreen);
- ps->Composite = fbComposite;
-- ps->Glyphs = fbGlyphs;
-- ps->UnrealizeGlyph = fbUnrealizeGlyph;
-+ ps->Glyphs = miGlyphs;
- ps->CompositeRects = miCompositeRects;
- ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
- ps->Trapezoids = fbTrapezoids;
-diff --git a/fb/fbscreen.c b/fb/fbscreen.c
-index f9080a4..7c7d656 100644
---- a/fb/fbscreen.c
-+++ b/fb/fbscreen.c
-@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
- int d;
- DepthPtr depths = pScreen->allowedDepths;
+ pixman_image_t *src, *dst;
+- int src_xoff, src_yoff;
+- int dst_xoff, dst_yoff;
-- fbDestroyGlyphCache();
- for (d = 0; d < pScreen->numDepths; d++)
- free(depths[d].vids);
- free(depths);
+ miCompositeSourceValidate(pSrc);
+
+- src = image_from_pict(pSrc, FALSE, &src_xoff, &src_yoff);
+- dst = image_from_pict(pDst, TRUE, &dst_xoff, &dst_yoff);
++ src = image_from_pict(pSrc, FALSE);
++ dst = image_from_pict(pDst, TRUE);
+
+ if (src && dst) {
+ pixman_format_code_t format;
+@@ -121,9 +115,8 @@ fbShapes(CompositeShapesFunc composite,
+
+ for (i = 0; i < 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->pDrawable);
--
-1.9.1
+2.0.1
Deleted: trunk/dports/x11/xorg-server-devel/files/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch 2014-07-19 23:58:24 UTC (rev 122293)
+++ trunk/dports/x11/xorg-server-devel/files/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch 2014-07-20 00:21:23 UTC (rev 122294)
@@ -1,297 +0,0 @@
-From 0b41adb9994696d40ef1ce66b5c70d867581f8a9 Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
-Date: Sat, 2 Nov 2013 11:00:23 -0700
-Subject: [PATCH 5004/5004] Use old miTrapezoids and miTriangles routines
-
-Reverts commits:
- 788ccb9a8bcf6a4fb4054c507111eec3338fb969
- 566f1931ee2916269e164e114bffaf2da1d039d1
-
-http://xquartz.macosforge.org/trac/ticket/525
-
-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
----
- 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 dc0ca3c..276ff06 100644
---- a/fb/fbpict.c
-+++ b/fb/fbpict.c
-@@ -326,10 +326,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
- ps->Glyphs = miGlyphs;
- ps->CompositeRects = miCompositeRects;
- ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
-- ps->Trapezoids = fbTrapezoids;
- ps->AddTraps = fbAddTraps;
- ps->AddTriangles = fbAddTriangles;
-- ps->Triangles = fbTriangles;
-
- return TRUE;
- }
-diff --git a/render/mipict.c b/render/mipict.c
-index 2e64b20..d21b58a 100644
---- a/render/mipict.c
-+++ b/render/mipict.c
-@@ -595,8 +595,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
- ps->Composite = 0; /* requires DDX support */
- ps->Glyphs = miGlyphs;
- ps->CompositeRects = miCompositeRects;
-- ps->Trapezoids = 0;
-- ps->Triangles = 0;
-+ ps->Trapezoids = miTrapezoids;
-+ ps->Triangles = miTriangles;
-
- ps->RasterizeTrapezoid = 0; /* requires DDX support */
- ps->AddTraps = 0; /* requires DDX support */
-diff --git a/render/mipict.h b/render/mipict.h
-index 9436228..7ee2991 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 "picturestr.h"
- #include "mipict.h"
-
-+PicturePtr
-+miCreateAlphaPicture (ScreenPtr pScreen,
-+ PicturePtr pDst,
-+ PictFormatPtr pPictFormat,
-+ CARD16 width,
-+ CARD16 height)
-+{
-+ PixmapPtr pPixmap;
-+ PicturePtr pPicture;
-+ GCPtr pGC;
-+ int error;
-+ xRectangle rect;
-+
-+ if (width > 32767 || height > 32767)
-+ return 0;
-+
-+ if (!pPictFormat)
-+ {
-+ if (pDst->polyEdge == PolyEdgeSharp)
-+ pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
-+ else
-+ pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
-+ if (!pPictFormat)
-+ return 0;
-+ }
-+
-+ pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height,
-+ pPictFormat->depth, 0);
-+ if (!pPixmap)
-+ return 0;
-+ pGC = GetScratchGC (pPixmap->drawable.depth, pScreen);
-+ if (!pGC)
-+ {
-+ (*pScreen->DestroyPixmap) (pPixmap);
-+ return 0;
-+ }
-+ ValidateGC (&pPixmap->drawable, pGC);
-+ rect.x = 0;
-+ rect.y = 0;
-+ rect.width = width;
-+ rect.height = height;
-+ (*pGC->ops->PolyFillRect)(&pPixmap->drawable, pGC, 1, &rect);
-+ FreeScratchGC (pGC);
-+ pPicture = CreatePicture (0, &pPixmap->drawable, pPictFormat,
-+ 0, 0, serverClient, &error);
-+ (*pScreen->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->x2 = x2;
- }
- }
-+
-+
-+void
-+miTrapezoids (CARD8 op,
-+ PicturePtr pSrc,
-+ PicturePtr pDst,
-+ PictFormatPtr maskFormat,
-+ INT16 xSrc,
-+ INT16 ySrc,
-+ int ntrap,
-+ xTrapezoid *traps)
-+{
-+ ScreenPtr pScreen = pDst->pDrawable->pScreen;
-+ PictureScreenPtr ps = GetPictureScreen(pScreen);
-+
-+ /*
-+ * Check for solid alpha add
-+ */
-+ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
-+ {
-+ for (; ntrap; ntrap--, traps++)
-+ (*ps->RasterizeTrapezoid) (pDst, traps, 0, 0);
-+ }
-+ else if (maskFormat)
-+ {
-+ PicturePtr pPicture;
-+ BoxRec bounds;
-+ INT16 xDst, yDst;
-+ INT16 xRel, yRel;
-+
-+ xDst = traps[0].left.p1.x >> 16;
-+ yDst = traps[0].left.p1.y >> 16;
-+
-+ miTrapezoidBounds (ntrap, traps, &bounds);
-+ if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2)
-+ return;
-+ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
-+ bounds.x2 - bounds.x1,
-+ bounds.y2 - bounds.y1);
-+ if (!pPicture)
-+ return;
-+ for (; ntrap; ntrap--, traps++)
-+ (*ps->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->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->pDrawable->pScreen;
-+ PictureScreenPtr ps = GetPictureScreen(pScreen);
-+
-+ /*
-+ * Check for solid alpha add
-+ */
-+ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
-+ {
-+ (*ps->AddTriangles) (pDst, 0, 0, ntri, tris);
-+ }
-+ else if (maskFormat)
-+ {
-+ BoxRec bounds;
-+ PicturePtr pPicture;
-+ INT16 xDst, yDst;
-+ INT16 xRel, yRel;
-+
-+ xDst = tris[0].p1.x >> 16;
-+ yDst = tris[0].p1.y >> 16;
-+
-+ miTriangleBounds (ntri, tris, &bounds);
-+ if (bounds.x2 <= bounds.x1 || bounds.y2 <= bounds.y1)
-+ return;
-+ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
-+ bounds.x2 - bounds.x1,
-+ bounds.y2 - bounds.y1);
-+ if (!pPicture)
-+ return;
-+ (*ps->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->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);
-+ }
-+}
-+
---
-1.9.1
-
Added: trunk/dports/x11/xorg-server-devel/files/5004-fb-Revert-fb-changes-that-broke-XQuartz.patch
===================================================================
--- 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 2014-07-20 00:21:23 UTC (rev 122294)
@@ -0,0 +1,247 @@
+From bccceaa79183e23d7a3c60f36acd537e2f0d6564 Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu at apple.com>
+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 "Use new pixman_glyph_cache_t API that will be in pixman 0.28.0"
+Revert "fb: Fix origin of source picture in fbGlyphs"
+Revert "fb: Publish fbGlyphs and fbUnrealizeGlyph"
+
+This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
+This reverts commit 983e30361f49a67252d0b5d82630e70724d69dbf.
+This reverts commit 3c2c59eed3c68c0e5a93c38cf01eedad015e3157.
+---
+ fb/fb.h | 3 --
+ fb/fbpict.c | 149 +---------------------------------------------------------
+ fb/fbpict.h | 15 +-----
+ fb/fbscreen.c | 1 -
+ 4 files changed, 2 insertions(+), 166 deletions(-)
+
+diff --git a/fb/fb.h b/fb/fb.h
+index f584154..25a7eff 100644
+--- a/fb/fb.h
++++ b/fb/fb.h
+@@ -1310,9 +1310,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 e7a3811..276ff06 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;
+- }
+-}
+-
+-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->pDrawable->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->xOff, yDst = list->yOff;
+-
+- miCompositeSourceValidate(pSrc);
+-
+- n_glyphs = 0;
+- for (i = 0; i < nlist; ++i)
+- n_glyphs += list[i].len;
+-
+- if (!glyphCache)
+- glyphCache = pixman_glyph_cache_create();
+-
+- pixman_glyph_cache_freeze (glyphCache);
+-
+- if (n_glyphs > N_STACK_GLYPHS) {
+- if (!(pglyphs = malloc (n_glyphs * sizeof (pixman_glyph_t))))
+- goto out;
+- }
+-
+- i = 0;
+- x = y = 0;
+- while (nlist--) {
+- x += list->xOff;
+- y += list->yOff;
+- n = list->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, &xoff, &yoff)))
+- goto out;
+-
+- g = pixman_glyph_cache_insert(glyphCache, glyph, NULL,
+- glyph->info.x,
+- glyph->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->info.xOff;
+- y += glyph->info.yOff;
+- }
+- list++;
+- }
+-
+- if (!(srcImage = image_from_pict(pSrc, FALSE, &srcXoff, &srcYoff)))
+- goto out;
+-
+- if (!(dstImage = image_from_pict(pDst, TRUE, &dstXoff, &dstYoff)))
+- goto out_free_src;
+-
+- if (maskFormat) {
+- pixman_format_code_t format;
+- pixman_box32_t extents;
+-
+- format = maskFormat->format | (maskFormat->depth << 24);
+-
+- pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &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)
+ {
+@@ -469,8 +323,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+ return FALSE;
+ ps = GetPictureScreen(pScreen);
+ ps->Composite = fbComposite;
+- ps->Glyphs = fbGlyphs;
+- ps->UnrealizeGlyph = fbUnrealizeGlyph;
++ ps->Glyphs = miGlyphs;
+ ps->CompositeRects = miCompositeRects;
+ ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
+ ps->AddTraps = fbAddTraps;
+diff --git a/fb/fbpict.h b/fb/fbpict.h
+index 8b0f59f..110f32d 100644
+--- a/fb/fbpict.h
++++ b/fb/fbpict.h
+@@ -65,24 +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
+-fbUnrealizeGlyph(ScreenPtr pScreen,
+- GlyphPtr pGlyph);
+-
+-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 0d4d87f..e6ff1bd 100644
+--- a/fb/fbscreen.c
++++ b/fb/fbscreen.c
+@@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
+ int d;
+ DepthPtr depths = pScreen->allowedDepths;
+
+- fbDestroyGlyphCache();
+ for (d = 0; d < pScreen->numDepths; d++)
+ free(depths[d].vids);
+ free(depths);
+--
+2.0.1
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20140719/555ffd37/attachment-0001.html>
More information about the macports-changes
mailing list