Revision: 100878 https://trac.macports.org/changeset/100878 Author: jeremyhu@macports.org Date: 2012-12-30 13:40:30 -0800 (Sun, 30 Dec 2012) Log Message: ----------- xorg-server-devel: Bump to 1.14 RC1 Modified Paths: -------------- 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/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch Added Paths: ----------- trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch Removed Paths: ------------- trunk/dports/x11/xorg-server-devel/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch trunk/dports/x11/xorg-server-devel/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch Modified: trunk/dports/x11/xorg-server-devel/Portfile =================================================================== --- trunk/dports/x11/xorg-server-devel/Portfile 2012-12-30 21:40:27 UTC (rev 100877) +++ trunk/dports/x11/xorg-server-devel/Portfile 2012-12-30 21:40:30 UTC (rev 100878) @@ -5,7 +5,7 @@ name xorg-server-devel conflicts xorg-server set my_name xorg-server -version 1.13.99.0 +version 1.13.99.901 categories x11 devel maintainers jeremyhu openmaintainer description The X.org / Xquartz X server. @@ -15,7 +15,7 @@ fetch.type git git.url git://anongit.freedesktop.org/xorg/xserver -git.branch d01921ec18c21f21d377b60626cc2d3418b84a7c +git.branch bd91b05b631f13afd1f7a9d6cbc4f0c5408b523a use_parallel_build yes @@ -73,11 +73,10 @@ RAWCPP=${configure.cpp} patchfiles \ - 0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch \ - 0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.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 + 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 \ + 5003-fb-Revert-fb-changes-that-broke-XQuartz.patch patch.pre_args -p1 Deleted: trunk/dports/x11/xorg-server-devel/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch =================================================================== --- trunk/dports/x11/xorg-server-devel/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch 2012-12-30 21:40:27 UTC (rev 100877) +++ trunk/dports/x11/xorg-server-devel/files/0001-XQuartz-Avoid-a-possible-deadlock-with-DRI-on-OS-X-1.patch 2012-12-30 21:40:30 UTC (rev 100878) @@ -1,41 +0,0 @@ -From b6b4287a1db26f75e88f53486c91bfefeb7726fd Mon Sep 17 00:00:00 2001 -From: Jeremy Huddleston Sequoia <jeremyhu@apple.com> -Date: Thu, 20 Sep 2012 21:49:40 -0700 -Subject: [PATCH 1/2] XQuartz: Avoid a possible deadlock with DRI on OS X - 10.7.5 and OS X 10.8.2 - -<rdar://problem/12338921> -http://bugs.winehq.org/show_bug.cgi?id=31751 - -Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> ---- - hw/xquartz/xpr/dri.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c -index 03af163..4fa4aa8 100644 ---- a/hw/xquartz/xpr/dri.c -+++ b/hw/xquartz/xpr/dri.c -@@ -64,6 +64,7 @@ - #include "mi.h" - #include "mipointer.h" - #include "rootless.h" -+#include "rootlessCommon.h" - #include "x-hash.h" - #include "x-hook.h" - #include "driWrap.h" -@@ -385,6 +386,11 @@ DRICreateSurface(ScreenPtr pScreen, Drawable id, - - if (NULL == pDRIDrawablePriv) - return FALSE; /*error*/ -+ -+ /* <rdar://problem/12338921> -+ * http://bugs.winehq.org/show_bug.cgi?id=31751 -+ */ -+ RootlessStopDrawing((WindowPtr)pDrawable, FALSE); - } - #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1030 - else if (pDrawable->type == DRAWABLE_PIXMAP) { --- -1.7.11.5 - Deleted: trunk/dports/x11/xorg-server-devel/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch =================================================================== --- trunk/dports/x11/xorg-server-devel/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch 2012-12-30 21:40:27 UTC (rev 100877) +++ trunk/dports/x11/xorg-server-devel/files/0002-XQuartz-Add-some-verbose-logging-to-debug-xp_lock_wi.patch 2012-12-30 21:40:30 UTC (rev 100878) @@ -1,67 +0,0 @@ -From a55ccb7e8f80992e985694a5ec40b5aa72526d39 Mon Sep 17 00:00:00 2001 -From: Jeremy Huddleston Sequoia <jeremyhu@apple.com> -Date: Thu, 20 Sep 2012 21:11:21 -0700 -Subject: [PATCH 2/2] XQuartz: Add some verbose logging to debug - xp_lock_window being unbalanced - -Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com> ---- - hw/xquartz/xpr/xprFrame.c | 28 ++++++++++++++++++++++++++++ - 1 file changed, 28 insertions(+) - -diff --git a/hw/xquartz/xpr/xprFrame.c b/hw/xquartz/xpr/xprFrame.c -index 01f1def..aad375b 100644 ---- a/hw/xquartz/xpr/xprFrame.c -+++ b/hw/xquartz/xpr/xprFrame.c -@@ -49,6 +49,10 @@ - #include <pthread.h> - #endif - -+#ifdef DEBUG_XP_LOCK_WINDOW -+#include <execinfo.h> -+#endif -+ - #define DEFINE_ATOM_HELPER(func, atom_name) \ - static Atom func(void) { \ - static int generation; \ -@@ -376,6 +380,18 @@ xprStartDrawing(RootlessFrameID wid, char **pixelData, int *bytesPerRow) - unsigned int rowbytes[2]; - xp_error err; - -+#ifdef DEBUG_XP_LOCK_WINDOW -+ void* callstack[128]; -+ int i, frames = backtrace(callstack, 128); -+ char** strs = backtrace_symbols(callstack, frames); -+ -+ ErrorF("=== LOCK %d ===\n", (int)x_cvt_vptr_to_uint(wid)); -+ for (i = 0; i < frames; ++i) { -+ ErrorF(" %s\n", strs[i]); -+ } -+ free(strs); -+#endif -+ - err = xp_lock_window(x_cvt_vptr_to_uint( - wid), NULL, NULL, data, rowbytes, NULL); - if (err != Success) -@@ -395,6 +411,18 @@ xprStopDrawing(RootlessFrameID wid, Bool flush) - { - xp_error err; - -+#ifdef DEBUG_XP_LOCK_WINDOW -+ void* callstack[128]; -+ int i, frames = backtrace(callstack, 128); -+ char** strs = backtrace_symbols(callstack, frames); -+ -+ ErrorF("=== UNLOCK %d ===\n", (int)x_cvt_vptr_to_uint(wid)); -+ for (i = 0; i < frames; ++i) { -+ ErrorF(" %s\n", strs[i]); -+ } -+ free(strs); -+#endif -+ - err = xp_unlock_window(x_cvt_vptr_to_uint(wid), flush); - /* This should be a FatalError, but we started tripping over it. Make it a - * FatalError after http://xquartz.macosforge.org/trac/ticket/482 is fixed. --- -1.7.11.5 - 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 2012-12-30 21:40:27 UTC (rev 100877) +++ trunk/dports/x11/xorg-server-devel/files/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch 2012-12-30 21:40:30 UTC (rev 100878) @@ -1,7 +1,7 @@ -From 6dfb7cd702c1130fbe2bc15ef5d00c1983037451 Mon Sep 17 00:00:00 2001 +From 2cad1b044ebe3007b9c18fce0525c75aeccde309 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston <jeremyhu@apple.com> Date: Fri, 13 Jan 2012 12:00:57 -0800 -Subject: [PATCH 5000/5002] sdksyms.sh: Use CPPFLAGS, not CFLAGS +Subject: [PATCH 5000/5003] sdksyms.sh: Use CPPFLAGS, not CFLAGS CFLAGS can include flags which are not useful to the preprocessor or can even cause it to fail. This fixes a build issue on darwin @@ -10,11 +10,11 @@ Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Keith Packard <keithp@keithp.com> --- - hw/xfree86/Makefile.am | 4 ++-- + hw/xfree86/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am -index e50cb88..7ccac80 100644 +index c3899b5..4f48b85 100644 --- a/hw/xfree86/Makefile.am +++ b/hw/xfree86/Makefile.am @@ -38,7 +38,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \ @@ -24,9 +24,9 @@ -AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@ +AM_CPPFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@ INCLUDES = $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \ - -I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac - -@@ -112,7 +112,7 @@ CLEANFILES = sdksyms.c sdksyms.dep + -I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \ + -I$(srcdir)/dri -I$(srcdir)/dri2 +@@ -115,7 +115,7 @@ CLEANFILES = sdksyms.c sdksyms.dep EXTRA_DIST += sdksyms.sh sdksyms.dep sdksyms.c: sdksyms.sh @@ -36,5 +36,5 @@ SDKSYMS_DEP = sdksyms.dep include $(SDKSYMS_DEP) -- -1.7.10.2 +1.8.0.2 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 2012-12-30 21:40:27 UTC (rev 100877) +++ trunk/dports/x11/xorg-server-devel/files/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch 2012-12-30 21:40:30 UTC (rev 100878) @@ -1,19 +1,19 @@ -From 6e3829d167383a2fa4b1f14817a91dc3ec12138e Mon Sep 17 00:00:00 2001 +From b54625d24e217592ef5f00415c58e1622b4c8008 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston <jeremyhu@apple.com> Date: Fri, 30 Apr 2010 13:08:25 -0700 -Subject: [PATCH 5001/5002] Workaround the GC clipping problem in - miPaintWindow and add some debugging output. +Subject: [PATCH 5001/5003] Workaround the GC clipping problem in miPaintWindow + and add some debugging output. Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> --- - mi/miexpose.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++------ + mi/miexpose.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 94 insertions(+), 10 deletions(-) diff --git a/mi/miexpose.c b/mi/miexpose.c -index dbb29ca..93fd8a1 100644 +index 8b7c93f..3e972f7 100644 --- a/mi/miexpose.c +++ b/mi/miexpose.c -@@ -490,7 +490,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin); +@@ -489,7 +489,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin); void RootlessStartDrawing(WindowPtr pWin); void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn); Bool IsFramedWindow(WindowPtr pWin); @@ -23,7 +23,7 @@ void miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) -@@ -519,23 +520,37 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) +@@ -518,23 +519,37 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) Bool solid = TRUE; DrawablePtr drawable = &pWin->drawable; @@ -70,7 +70,7 @@ while (pWin->backgroundState == ParentRelative) pWin = pWin->parent; -@@ -560,6 +575,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) +@@ -559,6 +574,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) else { PixmapPtr pixmap; @@ -89,7 +89,7 @@ tile_x_off = drawable->x; tile_y_off = drawable->y; -@@ -568,6 +595,12 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) +@@ -567,6 +594,12 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) return; pixmap = (*pScreen->GetWindowPixmap) ((WindowPtr) drawable); drawable = &pixmap->drawable; @@ -102,7 +102,7 @@ #ifdef COMPOSITE draw_x_off = pixmap->screen_x; draw_y_off = pixmap->screen_y; -@@ -630,6 +663,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) +@@ -629,6 +662,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what) ChangeGC(NullClient, pGC, gcmask, gcval); ValidateGC(drawable, pGC); @@ -161,5 +161,5 @@ pbox = RegionRects(prgn); for (i = numRects; --i >= 0; pbox++, prect++) { -- -1.7.10.2 +1.8.0.2 Modified: 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 2012-12-30 21:40:27 UTC (rev 100877) +++ trunk/dports/x11/xorg-server-devel/files/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch 2012-12-30 21:40:30 UTC (rev 100878) @@ -1,7 +1,7 @@ -From c36c05c6a2536e442964cfea2adaf8c8e3dc3356 Mon Sep 17 00:00:00 2001 +From fa26b51f4582e97b68a7ee9382147bc5b3c8cc3a Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston <jeremyhu@apple.com> Date: Fri, 12 Feb 2010 19:48:52 -0800 -Subject: [PATCH 5002/5002] fb: Revert fb changes that broke XQuartz +Subject: [PATCH 5002/5003] fb: Revert fb changes that broke XQuartz http://bugs.freedesktop.org/show_bug.cgi?id=26124 @@ -15,16 +15,16 @@ Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com> --- - fb/fb.h | 3 +-- - fb/fbpict.c | 82 +++++++++++++++++------------------------------------------ - fb/fbtrap.c | 43 +++++++++++++------------------ + 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 b327ce6..53a6c1a 100644 +index b869d12..895b148 100644 --- a/fb/fb.h +++ b/fb/fb.h -@@ -1683,8 +1683,7 @@ fbFillRegionSolid(DrawablePtr pDrawable, +@@ -1686,8 +1686,7 @@ fbFillRegionSolid(DrawablePtr pDrawable, RegionPtr pRegion, FbBits and, FbBits xor); extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict, @@ -35,7 +35,7 @@ extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *); diff --git a/fb/fbpict.c b/fb/fbpict.c -index 097a1a6..dc0ca3c 100644 +index 2804ff4..80c2a91 100644 --- a/fb/fbpict.c +++ b/fb/fbpict.c @@ -46,23 +46,18 @@ fbComposite(CARD8 op, @@ -67,7 +67,7 @@ } free_pixman_pict(pSrc, src); -@@ -143,20 +138,22 @@ create_conical_gradient_image(PictGradient * gradient) +@@ -293,20 +288,22 @@ create_conical_gradient_image(PictGradient * gradient) } static pixman_image_t * @@ -97,7 +97,7 @@ stride * sizeof(FbStride)); if (!image) -@@ -183,57 +180,31 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff) +@@ -333,57 +330,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); @@ -159,7 +159,7 @@ } switch (pict->repeatType) { -@@ -261,10 +232,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip, +@@ -411,10 +382,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) { @@ -171,7 +171,7 @@ pixman_image_set_alpha_map(image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y); -@@ -298,8 +267,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip, +@@ -448,8 +417,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip, } static pixman_image_t * @@ -181,7 +181,7 @@ { pixman_image_t *image = NULL; -@@ -307,7 +275,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff, +@@ -457,7 +425,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff, return NULL; if (pict->pDrawable) { @@ -190,7 +190,7 @@ } else if (pict->pSourcePict) { SourcePict *sp = pict->pSourcePict; -@@ -325,19 +293,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff, +@@ -475,19 +443,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); } @@ -312,5 +312,5 @@ DamageRegionProcessPending(pDst->pDrawable); -- -1.7.10.2 +1.8.0.2 Added: 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 (rev 0) +++ trunk/dports/x11/xorg-server-devel/files/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch 2012-12-30 21:40:30 UTC (rev 100878) @@ -0,0 +1,230 @@ +From b61545ca749f1b5da43f63dc847719d7ecbb9fd5 Mon Sep 17 00:00:00 2001 +From: Jeremy Huddleston Sequoia <jeremyhu@apple.com> +Date: Tue, 18 Dec 2012 01:03:38 -0800 +Subject: [PATCH 5003/5003] 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" + +This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366. +--- + configure.ac | 2 +- + fb/fb.h | 3 -- + fb/fbpict.c | 153 +--------------------------------------------------------- + fb/fbscreen.c | 1 - + 4 files changed, 2 insertions(+), 157 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 435a38f..4629fdd 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -811,7 +811,7 @@ LIBPCIACCESS="pciaccess >= 0.12.901" + LIBUDEV="libudev >= 143" + LIBSELINUX="libselinux >= 2.0.86" + LIBDBUS="dbus-1 >= 1.0" +-LIBPIXMAN="pixman-1 >= 0.27.2" ++LIBPIXMAN="pixman-1 >= 0.21.8" + + dnl Pixman is always required, but we separate it out so we can link + dnl specific modules against it +diff --git a/fb/fb.h b/fb/fb.h +index 895b148..cc5759c 100644 +--- a/fb/fb.h ++++ b/fb/fb.h +@@ -1344,9 +1344,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 80c2a91..dc0ca3c 100644 +--- a/fb/fbpict.c ++++ b/fb/fbpict.c +@@ -65,156 +65,6 @@ fbComposite(CARD8 op, + free_pixman_pict(pDst, dest); + } + +-static pixman_glyph_cache_t *glyphCache; +- +-void +-fbDestroyGlyphCache(void) +-{ +- if (glyphCache) +- { +- pixman_glyph_cache_destroy (glyphCache); +- glyphCache = NULL; +- } +-} +- +-static void +-fbUnrealizeGlyph(ScreenPtr pScreen, +- GlyphPtr pGlyph) +-{ +- if (glyphCache) +- pixman_glyph_cache_remove (glyphCache, pGlyph, NULL); +-} +- +-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; +- +- 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; +- int x, y; +- +- format = maskFormat->format | (maskFormat->depth << 24); +- +- pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &extents); +- +- x = extents.x1; +- y = extents.y1; +- +- pixman_composite_glyphs(op, srcImage, dstImage, format, +- xSrc + srcXoff + xDst, ySrc + srcYoff + yDst, +- x, y, +- x + dstXoff, y + 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) + { +@@ -473,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; + +- fbDestroyGlyphCache(); + for (d = 0; d < pScreen->numDepths; d++) + free(depths[d].vids); + free(depths); +-- +1.8.0.2 +
participants (1)
-
jeremyhu@macports.org