[68877] trunk/dports/x11/xorg-server-devel

jeremyhu at macports.org jeremyhu at macports.org
Wed Jun 16 13:18:50 PDT 2010


Revision: 68877
          http://trac.macports.org/changeset/68877
Author:   jeremyhu at macports.org
Date:     2010-06-16 13:18:47 -0700 (Wed, 16 Jun 2010)
Log Message:
-----------
xorg-server-devel: Bump to 1.8.99.901 (1.9 RC1)

Modified Paths:
--------------
    trunk/dports/x11/xorg-server-devel/Portfile

Added Paths:
-----------
    trunk/dports/x11/xorg-server-devel/files/0001-Clean-up-RandR12-bits-on-screen-close-bug-27114.patch
    trunk/dports/x11/xorg-server-devel/files/0002-In-DRI2Connect-check-to-see-if-DRI2-has-been-initial.patch
    trunk/dports/x11/xorg-server-devel/files/0003-Re-enabled-Xnest-fix-for-focus-in-modifier-bug.patch
    trunk/dports/x11/xorg-server-devel/files/0004-dix-the-default-axis-mode-is-Relative-not-0.patch
    trunk/dports/x11/xorg-server-devel/files/0005-XQuartz-Remove-some-dead-code.patch
    trunk/dports/x11/xorg-server-devel/files/0006-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
    trunk/dports/x11/xorg-server-devel/files/0007-fb-Revert-fb-changes-that-broke-XQuartz.patch

Removed Paths:
-------------
    trunk/dports/x11/xorg-server-devel/files/0001-Workaround-the-GC-clipping-problem-in-miPaintWindow.patch
    trunk/dports/x11/xorg-server-devel/files/0002-fb-Revert-fb-changes-that-broke-XQuartz.patch

Modified: trunk/dports/x11/xorg-server-devel/Portfile
===================================================================
--- trunk/dports/x11/xorg-server-devel/Portfile	2010-06-16 19:20:48 UTC (rev 68876)
+++ trunk/dports/x11/xorg-server-devel/Portfile	2010-06-16 20:18:47 UTC (rev 68877)
@@ -4,7 +4,7 @@
 
 name		xorg-server-devel
 set my_name	xorg-server
-version		1.8.1.901
+version		1.8.99.901
 categories	x11 devel
 maintainers	jeremyhu openmaintainer
 description	The X.org / Xquartz X server.
@@ -18,9 +18,9 @@
 dist_subdir     ${my_name}
 distname        ${my_name}-${version}
 
-checksums           md5     fb5fa2229a4dee151f4525b2f5747c8c \
-                    sha1    e26228cbeb387ec37ee6c549a208534a2dd2ae43 \
-                    rmd160  36c0a17c5b41ddb222117b35616630b093300e5c
+checksums           md5     ebc580fcf4ad9fb03ab9119525467f4a \
+                    sha1    f2409a8fac39e3648312b3be11f54fc0317b2b4d \
+                    rmd160  7fdb0af51c0a74e8a8271d9461536116d4ee3be5
 
 use_bzip2	yes
 use_parallel_build yes
@@ -82,8 +82,13 @@
 	RAWCPP=${configure.cpp}
 
 patchfiles \
-        0001-Workaround-the-GC-clipping-problem-in-miPaintWindow.patch \
-        0002-fb-Revert-fb-changes-that-broke-XQuartz.patch
+        0001-Clean-up-RandR12-bits-on-screen-close-bug-27114.patch \
+        0002-In-DRI2Connect-check-to-see-if-DRI2-has-been-initial.patch \
+        0003-Re-enabled-Xnest-fix-for-focus-in-modifier-bug.patch \
+        0004-dix-the-default-axis-mode-is-Relative-not-0.patch \
+        0005-XQuartz-Remove-some-dead-code.patch \
+        0006-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch \
+        0007-fb-Revert-fb-changes-that-broke-XQuartz.patch
 
 patch.pre_args -p1
 

Added: trunk/dports/x11/xorg-server-devel/files/0001-Clean-up-RandR12-bits-on-screen-close-bug-27114.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0001-Clean-up-RandR12-bits-on-screen-close-bug-27114.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0001-Clean-up-RandR12-bits-on-screen-close-bug-27114.patch	2010-06-16 20:18:47 UTC (rev 68877)
@@ -0,0 +1,92 @@
+From 68a9ee8370e6f9b38218376ac92d5130a5b0ef1e Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp at keithp.com>
+Date: Fri, 7 May 2010 22:56:04 -0700
+Subject: [PATCH 1/7] Clean up RandR12 bits on screen close (bug 27114)
+
+When resetting the server, pScrn->EnterVT must be unwrapped or the
+next server generation will end up wrapping the wrapper and causing an
+infinite recursion on EnterVT.
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+Tested-by: Michael Stapelberg <michael+freedesktop at stapelberg.de>
+---
+ hw/xfree86/modes/xf86Crtc.c    |    2 ++
+ hw/xfree86/modes/xf86RandR12.c |   26 +++++++++++++++++++++++++-
+ hw/xfree86/modes/xf86RandR12.h |    1 +
+ 3 files changed, 28 insertions(+), 1 deletions(-)
+
+diff --git xorg-server-1.8.99.901/hw/xfree86/modes/xf86Crtc.c xorg-server-1.8.99.901/hw/xfree86/modes/xf86Crtc.c
+index a62a63f..7f6fad3 100644
+--- xorg-server-1.8.99.901/hw/xfree86/modes/xf86Crtc.c
++++ xorg-server-1.8.99.901/hw/xfree86/modes/xf86Crtc.c
+@@ -753,6 +753,8 @@ xf86CrtcCloseScreen (int index, ScreenPtr screen)
+ 
+ 	crtc->randr_crtc = NULL;
+     }
++    xf86RandR12CloseScreen (screen);
++
+     return screen->CloseScreen (index, screen);
+ }
+ 
+diff --git xorg-server-1.8.99.901/hw/xfree86/modes/xf86RandR12.c xorg-server-1.8.99.901/hw/xfree86/modes/xf86RandR12.c
+index bb4d75e..043ceee 100644
+--- xorg-server-1.8.99.901/hw/xfree86/modes/xf86RandR12.c
++++ xorg-server-1.8.99.901/hw/xfree86/modes/xf86RandR12.c
+@@ -928,6 +928,24 @@ xf86RandR12Init (ScreenPtr pScreen)
+ }
+ 
+ void
++xf86RandR12CloseScreen (ScreenPtr pScreen)
++{
++    XF86RandRInfoPtr	randrp;
++
++#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0)
++    if (xf86RandR12Key == NULL)
++	return;
++#endif
++
++    randrp = XF86RANDRINFO(pScreen);
++#if RANDR_12_INTERFACE
++    xf86Screens[pScreen->myNum]->EnterVT = randrp->orig_EnterVT;
++#endif
++
++    free(randrp);
++}
++
++void
+ xf86RandR12SetRotations (ScreenPtr pScreen, Rotation rotations)
+ {
+     XF86RandRInfoPtr	randrp;
+@@ -1755,10 +1773,16 @@ static Bool
+ xf86RandR12EnterVT (int screen_index, int flags)
+ {
+     ScreenPtr        pScreen = screenInfo.screens[screen_index];
++    ScrnInfoPtr	     pScrn = xf86Screens[screen_index];
+     XF86RandRInfoPtr randrp  = XF86RANDRINFO(pScreen);
++    Bool	     ret;
+ 
+     if (randrp->orig_EnterVT) {
+-	if (!randrp->orig_EnterVT (screen_index, flags))
++	pScrn->EnterVT = randrp->orig_EnterVT;
++	ret = pScrn->EnterVT (screen_index, flags);
++	randrp->orig_EnterVT = pScrn->EnterVT;
++	pScrn->EnterVT = xf86RandR12EnterVT;
++	if (!ret)
+ 	    return FALSE;
+     }
+ 
+diff --git xorg-server-1.8.99.901/hw/xfree86/modes/xf86RandR12.h xorg-server-1.8.99.901/hw/xfree86/modes/xf86RandR12.h
+index c8d9918..0c586be 100644
+--- xorg-server-1.8.99.901/hw/xfree86/modes/xf86RandR12.h
++++ xorg-server-1.8.99.901/hw/xfree86/modes/xf86RandR12.h
+@@ -30,6 +30,7 @@
+ 
+ extern _X_EXPORT Bool xf86RandR12CreateScreenResources (ScreenPtr pScreen);
+ extern _X_EXPORT Bool xf86RandR12Init(ScreenPtr pScreen);
++extern _X_EXPORT void xf86RandR12CloseScreen(ScreenPtr pScreen);
+ extern _X_EXPORT void xf86RandR12SetRotations (ScreenPtr pScreen, Rotation rotation);
+ extern _X_EXPORT void xf86RandR12SetTransformSupport (ScreenPtr pScreen, Bool transforms);
+ extern _X_EXPORT Bool xf86RandR12SetConfig(ScreenPtr pScreen, Rotation rotation, int rate,
+-- 
+1.7.1
+

Deleted: trunk/dports/x11/xorg-server-devel/files/0001-Workaround-the-GC-clipping-problem-in-miPaintWindow.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0001-Workaround-the-GC-clipping-problem-in-miPaintWindow.patch	2010-06-16 19:20:48 UTC (rev 68876)
+++ trunk/dports/x11/xorg-server-devel/files/0001-Workaround-the-GC-clipping-problem-in-miPaintWindow.patch	2010-06-16 20:18:47 UTC (rev 68877)
@@ -1,165 +0,0 @@
-From 38f44a94b634d05b05574d0a341851f8177bff15 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] Workaround the GC clipping problem in miPaintWindow and add some debugging output.
-
-Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
-(cherry picked from commit a9c526bbe10ecf97b6c065fdbc03cc341917a5a6)
----
- mi/miexpose.c |  105 +++++++++++++++++++++++++++++++++++++++++++++++++++------
- 1 files changed, 94 insertions(+), 11 deletions(-)
-
-diff --git xorg-server-1.8.1.901/mi/miexpose.c xorg-server-1.8.1.901/mi/miexpose.c
-index f52b492..21493cb 100644
---- xorg-server-1.8.1.901/mi/miexpose.c
-+++ xorg-server-1.8.1.901/mi/miexpose.c
-@@ -524,6 +524,7 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
- void RootlessStartDrawing(WindowPtr pWin);
- void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
- Bool IsFramedWindow(WindowPtr pWin);
-+#include "../fb/fb.h"
- #endif 
- 
- void
-@@ -551,24 +552,37 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
-     Bool	solid = TRUE;
-     DrawablePtr	drawable = &pWin->drawable;
- 
-+#ifdef XQUARTZ_CLIP_DEBUG
-+    ErrorF("START %d BS %d (pR = %ld)\n", what, pWin->backgroundState, ParentRelative);
-+    ErrorF("      Rgn: %d %d %d %d\n", prgn->extents.x1, prgn->extents.y1,
-+	                               prgn->extents.x2 - prgn->extents.x1,
-+	                               prgn->extents.y2 - prgn->extents.y1);
-+    ErrorF("      Win: %d %d (%d %d) %d %d\n", pWin->origin.x, pWin->origin.y,
-+	                                       pWin->winSize.extents.x1, pWin->winSize.extents.y1,
-+	                                       pWin->winSize.extents.x2 - pWin->winSize.extents.x1,
-+					       pWin->winSize.extents.y2 - pWin->winSize.extents.y1);
-+    ErrorF("     Draw: %d %d %d %d\n", pWin->drawable.x, pWin->drawable.y,
-+				       pWin->drawable.width, pWin->drawable.height);
-+#endif
-+
- #ifdef ROOTLESS
-     if(!drawable || drawable->type == UNDRAWABLE_WINDOW)
- 	return;
--
--    if(IsFramedWindow(pWin)) {
--        RootlessStartDrawing(pWin);
--        RootlessDamageRegion(pWin, prgn);
--    
--        if(pWin->backgroundState == ParentRelative) {
--            if((what == PW_BACKGROUND) || 
--               (what == PW_BORDER && !pWin->borderIsPixel))
--                RootlessSetPixmapOfAncestors(pWin);
--        }
--    }
- #endif
-     
-     if (what == PW_BACKGROUND)
-     {
-+#ifdef ROOTLESS
-+	if(IsFramedWindow(pWin)) {
-+	    RootlessStartDrawing(pWin);
-+	    RootlessDamageRegion(pWin, prgn);
-+
-+	    if(pWin->backgroundState == ParentRelative) {
-+		RootlessSetPixmapOfAncestors(pWin);
-+	    }
-+	}
-+#endif
-+
- 	while (pWin->backgroundState == ParentRelative)
- 	    pWin = pWin->parent;
- 
-@@ -590,6 +604,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
-     {
- 	PixmapPtr   pixmap;
- 
-+#ifdef ROOTLESS
-+	if(IsFramedWindow(pWin)) {
-+	    RootlessStartDrawing(pWin);
-+	    RootlessDamageRegion(pWin, prgn);
-+	    
-+	    if(!pWin->borderIsPixel &&
-+		pWin->backgroundState == ParentRelative) {
-+		RootlessSetPixmapOfAncestors(pWin);
-+	    }
-+	}
-+#endif
-+
- 	tile_x_off = drawable->x;
- 	tile_y_off = drawable->y;
- 	
-@@ -598,6 +624,12 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
- 	    return;
- 	pixmap = (*pScreen->GetWindowPixmap) ((WindowPtr) drawable);
- 	drawable = &pixmap->drawable;
-+
-+#ifdef XQUARTZ_CLIP_DEBUG
-+	ErrorF("     Draw: %d %d %d %d\n",
-+	       drawable->x, drawable->y, drawable->width, drawable->height);    
-+#endif
-+	
- #ifdef COMPOSITE
- 	draw_x_off = pixmap->screen_x;
- 	draw_y_off = pixmap->screen_y;
-@@ -660,6 +692,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
-     dixChangeGC (NullClient, pGC, gcmask, NULL, gcval);
-     ValidateGC (drawable, pGC);
- 
-+#ifdef XQUARTZ_CLIP_DEBUG
-+    ErrorF("       GC: %d %d %d %d\n",
-+	   pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
-+	   pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
-+	   pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);
-+#endif
-+    
-+#ifdef XQUARTZ
-+    /* Looks like our clipping isn't set right for some reason:
-+     * http://xquartz.macosforge.org/trac/ticket/290
-+     */
-+    if(what == PW_BORDER) {
-+
-+#if 0
-+	if(solid) {
-+#if 1
-+	    fbFillRegionSolid(&pWin->drawable,
-+			      prgn,
-+			      0,
-+			      fbReplicatePixel(fill.pixel,
-+					       pWin->drawable.bitsPerPixel));
-+#else
-+	    fbFillRegionSolid(drawable,
-+			      prgn,
-+			      0,
-+			      fbReplicatePixel(fill.pixel,
-+					       drawable->bitsPerPixel));
-+#endif
-+	    return;
-+	}
-+#endif
-+    
-+	pGC->pCompositeClip->extents.x1 += prgn->extents.x1;
-+	pGC->pCompositeClip->extents.y1 += prgn->extents.y1;
-+	pGC->pCompositeClip->extents.x2 += prgn->extents.x1;
-+	pGC->pCompositeClip->extents.y2 += prgn->extents.y1;
-+	
-+	if(pGC->pCompositeClip->extents.x2 > drawable->pScreen->width)
-+	    pGC->pCompositeClip->extents.x2 = drawable->pScreen->width;
-+	if(pGC->pCompositeClip->extents.y2 > drawable->pScreen->height)
-+	    pGC->pCompositeClip->extents.y2 = drawable->pScreen->height;
-+    }
-+#endif
-+
-+#ifdef XQUARTZ_CLIP_DEBUG
-+    ErrorF("       GC: %d %d %d %d\n",
-+	   pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
-+	   pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
-+	   pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);    
-+#endif
-+
-     numRects = REGION_NUM_RECTS(prgn);
-     pbox = REGION_RECTS(prgn);
-     for (i= numRects; --i >= 0; pbox++, prect++)
--- 
-1.5.6.6
-

Added: trunk/dports/x11/xorg-server-devel/files/0002-In-DRI2Connect-check-to-see-if-DRI2-has-been-initial.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0002-In-DRI2Connect-check-to-see-if-DRI2-has-been-initial.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0002-In-DRI2Connect-check-to-see-if-DRI2-has-been-initial.patch	2010-06-16 20:18:47 UTC (rev 68877)
@@ -0,0 +1,35 @@
+From 505724c5f3e4fc1475fa54f20d08c0c06fb32443 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp at keithp.com>
+Date: Mon, 7 Jun 2010 16:28:34 -0700
+Subject: [PATCH 2/7] In DRI2Connect, check to see if DRI2 has been initialized (bug 28424)
+
+This prevents DRI2GetScreen from being invoked with an uninitialized
+private key which would cause an assert failure.
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+Tested-by: David Ronis <David.Ronis at McGill.CA>
+---
+ hw/xfree86/dri2/dri2.c |    6 +++++-
+ 1 files changed, 5 insertions(+), 1 deletions(-)
+
+diff --git xorg-server-1.8.99.901/hw/xfree86/dri2/dri2.c xorg-server-1.8.99.901/hw/xfree86/dri2/dri2.c
+index 27d8e25..a8dedfa 100644
+--- xorg-server-1.8.99.901/hw/xfree86/dri2/dri2.c
++++ xorg-server-1.8.99.901/hw/xfree86/dri2/dri2.c
+@@ -957,8 +957,12 @@ Bool
+ DRI2Connect(ScreenPtr pScreen, unsigned int driverType, int *fd,
+ 	    const char **driverName, const char **deviceName)
+ {
+-    DRI2ScreenPtr ds = DRI2GetScreen(pScreen);
++    DRI2ScreenPtr ds;
++
++    if (!dixPrivateKeyRegistered(dri2ScreenPrivateKey))
++	return FALSE;
+ 
++    ds = DRI2GetScreen(pScreen);
+     if (ds == NULL || driverType >= ds->numDrivers ||
+ 	    !ds->driverNames[driverType])
+ 	return FALSE;
+-- 
+1.7.1
+

Deleted: trunk/dports/x11/xorg-server-devel/files/0002-fb-Revert-fb-changes-that-broke-XQuartz.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0002-fb-Revert-fb-changes-that-broke-XQuartz.patch	2010-06-16 19:20:48 UTC (rev 68876)
+++ trunk/dports/x11/xorg-server-devel/files/0002-fb-Revert-fb-changes-that-broke-XQuartz.patch	2010-06-16 20:18:47 UTC (rev 68877)
@@ -1,231 +0,0 @@
-From d9043c99f70a019477936134899e07441ec2a1a9 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] 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     |    7 +----
- fb/fbpict.c |   72 ++++++++++++++++++-----------------------------------------
- fb/fbtrap.c |    6 +---
- 3 files changed, 26 insertions(+), 59 deletions(-)
-
-diff --git xorg-server-1.8.1.901/fb/fb.h xorg-server-1.8.1.901/fb/fb.h
-index 02d6c03..ed21f9e 100644
---- xorg-server-1.8.1.901/fb/fb.h
-+++ xorg-server-1.8.1.901/fb/fb.h
-@@ -2082,11 +2082,8 @@ fbFillRegionSolid (DrawablePtr	pDrawable,
- 		   FbBits	xor);
- 
- extern _X_EXPORT pixman_image_t *
--image_from_pict (PicturePtr	pict,
--		 Bool		has_clip,
--		 int		*xoff,
--		 int		*yoff);
--
-+image_from_pict (PicturePtr pict,
-+		 Bool       has_clip);
- extern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *);
- 
- #endif /* _FB_H_ */
-diff --git xorg-server-1.8.1.901/fb/fbpict.c xorg-server-1.8.1.901/fb/fbpict.c
-index dddfce8..07a2286 100644
---- xorg-server-1.8.1.901/fb/fbpict.c
-+++ xorg-server-1.8.1.901/fb/fbpict.c
-@@ -158,24 +158,19 @@ fbComposite (CARD8      op,
- 	     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, xSrc - xDst, ySrc - yDst, width, height);
-     if (pMask)
- 	miCompositeSourceValidate (pMask, xMask - xDst, yMask - yDst, width, height);
-     
--    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,
-+				xSrc, ySrc, xMask, yMask, xDst, yDst,
- 				width, height);
-     }
- 
-@@ -275,22 +270,22 @@ create_conical_gradient_image (PictGradient *gradient)
- 
- static pixman_image_t *
- create_bits_picture (PicturePtr pict,
--		     Bool       has_clip,
--		     int	*xoff,
--		     int	*yoff)
-+		     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 (
- 	pict->format,
--	pixmap->drawable.width, pixmap->drawable.height,
-+	pict->pDrawable->width, pict->pDrawable->height,
- 	(uint32_t *)bits, stride * sizeof (FbStride));
-     
-     
-@@ -316,52 +311,30 @@ create_bits_picture (PicturePtr pict,
- 	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 void
--set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-+set_image_properties (pixman_image_t *image, PicturePtr pict)
- {
-     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, (pixman_transform_t *)pict->transform);
-     }
-     
-     switch (pict->repeatType)
-@@ -388,8 +361,7 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int
-     
-     if (pict->alphaMap)
-     {
--	int alpha_xoff, alpha_yoff;
--	pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, FALSE, &alpha_xoff, &alpha_yoff);
-+	pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, TRUE);
- 	
- 	pixman_image_set_alpha_map (
- 	    image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y);
-@@ -422,7 +394,8 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int
- }
- 
- pixman_image_t *
--image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-+image_from_pict (PicturePtr pict,
-+		 Bool has_clip)
- {
-     pixman_image_t *image = NULL;
- 
-@@ -431,7 +404,7 @@ image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
- 
-     if (pict->pDrawable)
-     {
--	image = create_bits_picture (pict, has_clip, xoff, yoff);
-+	image = create_bits_picture (pict, has_clip);
-     }
-     else if (pict->pSourcePict)
-     {
-@@ -452,11 +425,10 @@ image_from_pict (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);
-+	set_image_properties (image, pict);
-     
-     return image;
- }
-diff --git xorg-server-1.8.1.901/fb/fbtrap.c xorg-server-1.8.1.901/fb/fbtrap.c
-index 515e2e1..830603a 100644
---- xorg-server-1.8.1.901/fb/fbtrap.c
-+++ xorg-server-1.8.1.901/fb/fbtrap.c
-@@ -40,8 +40,7 @@ fbAddTraps (PicturePtr	pPicture,
- 	    int		ntrap,
- 	    xTrap	*traps)
- {
--    int image_xoff, image_yoff;
--    pixman_image_t *image = image_from_pict (pPicture, FALSE, &image_xoff, &image_yoff);
-+    pixman_image_t *image = image_from_pict (pPicture, FALSE);
- 
-     if (!image)
- 	return;
-@@ -57,8 +56,7 @@ fbRasterizeTrapezoid (PicturePtr    pPicture,
- 		      int	    x_off,
- 		      int	    y_off)
- {
--    int	mask_xoff, mask_yoff;
--    pixman_image_t *image = image_from_pict (pPicture, FALSE, &mask_xoff, &mask_yoff);
-+    pixman_image_t *image = image_from_pict (pPicture, FALSE);
- 
-     if (!image)
- 	return;
--- 
-1.5.6.6
-

Added: trunk/dports/x11/xorg-server-devel/files/0003-Re-enabled-Xnest-fix-for-focus-in-modifier-bug.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0003-Re-enabled-Xnest-fix-for-focus-in-modifier-bug.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0003-Re-enabled-Xnest-fix-for-focus-in-modifier-bug.patch	2010-06-16 20:18:47 UTC (rev 68877)
@@ -0,0 +1,161 @@
+From db0d3d4e573c93a8af43499682ed788c7bd0d70d Mon Sep 17 00:00:00 2001
+From: Xiaoyang Yu (Max) <max.a.yu at intel.com>
+Date: Fri, 4 Jun 2010 17:17:53 +0800
+Subject: [PATCH 3/7] Re-enabled Xnest fix for focus in + modifier bug.
+
+* See https://bugs.freedesktop.org/show_bug.cgi?id=3030
+
+Signed-off-by: Xiaoyang Yu (Max) <max.a.yu at intel.com>
+Reviewed-by: Mikhail Gusarov <dottedmag at dottedmag.net>
+
+This takes the xnest way of working around this (see
+5904ef2ccd6056b187ca76f104c21e2d686bfc1d "xnest: restore
+xnestUpdateModifierState") and copies it to Xephyr.
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ hw/kdrive/ephyr/ephyr.c |  107 ++++++++++++++++++++---------------------------
+ 1 files changed, 45 insertions(+), 62 deletions(-)
+
+diff --git xorg-server-1.8.99.901/hw/kdrive/ephyr/ephyr.c xorg-server-1.8.99.901/hw/kdrive/ephyr/ephyr.c
+index e0cb956..bd7deed 100644
+--- xorg-server-1.8.99.901/hw/kdrive/ephyr/ephyr.c
++++ xorg-server-1.8.99.901/hw/kdrive/ephyr/ephyr.c
+@@ -38,6 +38,8 @@
+ #include "ephyrglxext.h"
+ #endif /* XF86DRI */
+ 
++#include "xkbsrv.h"
++
+ extern int KdTsPhyScreen;
+ #ifdef GLXEXT
+ extern Bool noGlxVisualInit;
+@@ -748,75 +750,55 @@ ephyrScreenFini (KdScreenInfo *screen)
+ void
+ ephyrUpdateModifierState(unsigned int state)
+ {
+-#if 0
+-  DeviceIntPtr pkeydev;
+-  KeyClassPtr  keyc;
+-  int          i;
+-  CARD8        mask;
+-
+-  pkeydev = inputInfo.keyboard;
+ 
+-  if (!pkeydev)
+-    return;
++  DeviceIntPtr pDev = inputInfo.keyboard;
++  KeyClassPtr keyc = pDev->key;
++  int i;
++  CARD8 mask;
++  int xkb_state;
+   
+-/* This is pretty broken.
+- *
+- * What should happen is that focus out should do as a VT switch does in
+- * traditional servers: fake releases for all keys (and buttons too, come
+- * to think of it) currently down.  Then, on focus in, get the state from
+- * the host, and fake keypresses for everything currently down.
+- *
+- * So I'm leaving this broken for a little while.  Sorry, folks.
+- *
+- * -daniels
+- */
++  if (!pDev)
++      return;
+ 
+-  keyc = pkeydev->key;
+-  
++  xkb_state = XkbStateFieldFromRec(&pDev->key->xkbInfo->state);
+   state = state & 0xff;
+-  
+-  if (keyc->state == state)
++
++  if (xkb_state == state)
+     return;
+-  
+-  for (i = 0, mask = 1; i < 8; i++, mask <<= 1) 
+-    {
+-      int key;
+       
+-      /* Modifier is down, but shouldn't be   */
+-      if ((keyc->state & mask) && !(state & mask)) 
+-	{
+-	  int count = keyc->modifierKeyCount[i];
+-	  
+-	  for (key = 0; key < MAP_LENGTH; key++)
+-	    if (keyc->xkbInfo->desc->map->modmap[key] & mask)
+-	      {
+-		int bit;
+-		BYTE *kptr;
+-		
+-		kptr = &keyc->down[key >> 3];
+-		bit = 1 << (key & 7);
+-		
+-		if (*kptr & bit && ephyrKbd &&
+-                    ((EphyrKbdPrivate *)ephyrKbd->driverPrivate)->enabled)
+-		  KdEnqueueKeyboardEvent(ephyrKbd, key, TRUE); /* release */
+-		
+-		if (--count == 0)
+-		  break;
+-	      }
+-	}
+-       
+-      /* Modifier shoud be down, but isn't   */
+-      if (!(keyc->state & mask) && (state & mask))
+-	for (key = 0; key < MAP_LENGTH; key++)
+-	  if (keyc->xkbInfo->desc->map->modmap[key] & mask)
+-	    {
+-              if (keyc->xkbInfo->desc->map->modmap[key] & mask && ephyrKbd &&
+-                  ((EphyrKbdPrivate *)ephyrKbd->driverPrivate)->enabled)
+-	          KdEnqueueKeyboardEvent(ephyrKbd, key, FALSE); /* press */
+-	      break;
+-	    }
++  for (i = 0, mask = 1; i < 8; i++, mask <<= 1) {
++    int key;
++
++    /* Modifier is down, but shouldn't be
++     */
++    if ((xkb_state & mask) && !(state & mask)) {
++      int count = keyc->modifierKeyCount[i];
++
++      for (key = 0; key < MAP_LENGTH; key++)
++        if (keyc->xkbInfo->desc->map->modmap[key] & mask) {
++          int bit;
++          BYTE *kptr;
++
++          kptr = &keyc->down[key >> 3];
++          bit = 1 << (key & 7);
++
++          if (*kptr & bit)
++	        KdEnqueueKeyboardEvent (ephyrKbd, key, TRUE);
++
++          if (--count == 0)
++            break;
++        }
+     }
+-#endif
++
++    /* Modifier shoud be down, but isn't
++     */
++    if (!(xkb_state & mask) && (state & mask))
++      for (key = 0; key < MAP_LENGTH; key++)
++        if (keyc->xkbInfo->desc->map->modmap[key] & mask) {
++	        KdEnqueueKeyboardEvent (ephyrKbd, key, FALSE);
++          break;
++        }
++  }
+ }
+ 
+ static void
+@@ -998,6 +980,7 @@ ephyrPoll(void)
+           if (!ephyrKbd ||
+               !((EphyrKbdPrivate *)ephyrKbd->driverPrivate)->enabled)
+               continue;
++	  ephyrUpdateModifierState(ev.key_state);
+ 	  KdEnqueueKeyboardEvent (ephyrKbd, ev.data.key_up.scancode, TRUE);
+ 	  break;
+ 
+-- 
+1.7.1
+

Added: trunk/dports/x11/xorg-server-devel/files/0004-dix-the-default-axis-mode-is-Relative-not-0.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0004-dix-the-default-axis-mode-is-Relative-not-0.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0004-dix-the-default-axis-mode-is-Relative-not-0.patch	2010-06-16 20:18:47 UTC (rev 68877)
@@ -0,0 +1,29 @@
+From 868bf3de478fac0080d525137fc728c551c78ea6 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Tue, 15 Jun 2010 13:22:20 +1000
+Subject: [PATCH 4/7] dix: the default axis mode is Relative, not "0".
+
+Yay for readability.
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+Reviewed-by: Fernando Carrijo <fcarrijo at yahoo.com.br>
+---
+ dix/devices.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git xorg-server-1.8.99.901/dix/devices.c xorg-server-1.8.99.901/dix/devices.c
+index bca2caf..034d5e6 100644
+--- xorg-server-1.8.99.901/dix/devices.c
++++ xorg-server-1.8.99.901/dix/devices.c
+@@ -1546,7 +1546,7 @@ InitPointerDeviceStruct(DevicePtr device, CARD8 *map, int numButtons, Atom* btn_
+ 
+     return(InitButtonClassDeviceStruct(dev, numButtons, btn_labels, map) &&
+ 	   InitValuatorClassDeviceStruct(dev, numAxes, axes_labels,
+-					 numMotionEvents, 0) &&
++					 numMotionEvents, Relative) &&
+ 	   InitPtrFeedbackClassDeviceStruct(dev, controlProc));
+ }
+ 
+-- 
+1.7.1
+

Added: trunk/dports/x11/xorg-server-devel/files/0005-XQuartz-Remove-some-dead-code.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0005-XQuartz-Remove-some-dead-code.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0005-XQuartz-Remove-some-dead-code.patch	2010-06-16 20:18:47 UTC (rev 68877)
@@ -0,0 +1,96 @@
+From 162f3143ff4d498c35880a1e569189c3fdf9dbae Mon Sep 17 00:00:00 2001
+From: Jan Hauffa <hauffa at in.tum.de>
+Date: Wed, 16 Jun 2010 09:25:41 -0700
+Subject: [PATCH 5/7] XQuartz: Remove some dead code.
+
+Signed-off-by: Jan Hauffa <hauffa at in.tum.de>
+Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
+---
+ hw/xquartz/quartz.c       |    4 ----
+ hw/xquartz/quartzCocoa.m  |   11 -----------
+ hw/xquartz/quartzCommon.h |   15 ---------------
+ 3 files changed, 0 insertions(+), 30 deletions(-)
+
+diff --git xorg-server-1.8.99.901/hw/xquartz/quartz.c xorg-server-1.8.99.901/hw/xquartz/quartz.c
+index 2828c57..bdaa262 100644
+--- xorg-server-1.8.99.901/hw/xquartz/quartz.c
++++ xorg-server-1.8.99.901/hw/xquartz/quartz.c
+@@ -67,12 +67,8 @@
+ #define FAKE_RANDR 1
+ 
+ // Shared global variables for Quartz modes
+-int                     quartzEventWriteFD = -1;
+ int                     quartzUseSysBeep = 0;
+-int                     quartzUseAGL = 1;
+-int                     quartzEnableKeyEquivalents = 1;
+ int                     quartzServerVisible = FALSE;
+-int                     quartzServerQuitting = FALSE;
+ DevPrivateKeyRec        quartzScreenKeyRec;
+ int                     aquaMenuBarHeight = 0;
+ QuartzModeProcsPtr      quartzProcs = NULL;
+diff --git xorg-server-1.8.99.901/hw/xquartz/quartzCocoa.m xorg-server-1.8.99.901/hw/xquartz/quartzCocoa.m
+index 4501472..54c900d 100644
+--- xorg-server-1.8.99.901/hw/xquartz/quartzCocoa.m
++++ xorg-server-1.8.99.901/hw/xquartz/quartzCocoa.m
+@@ -44,17 +44,6 @@
+ #include "darwin.h"
+ 
+ /*
+- * QuartzFSUseQDCursor
+- *  Return whether the screen should use a QuickDraw cursor.
+- */
+-int QuartzFSUseQDCursor(
+-    int depth)  // screen depth
+-{
+-    return TRUE;
+-}
+-
+-
+-/*
+  * QuartzBlockHandler
+  *  Clean out any autoreleased objects.
+  */
+diff --git xorg-server-1.8.99.901/hw/xquartz/quartzCommon.h xorg-server-1.8.99.901/hw/xquartz/quartzCommon.h
+index c038ed0..eb761ed 100644
+--- xorg-server-1.8.99.901/hw/xquartz/quartzCommon.h
++++ xorg-server-1.8.99.901/hw/xquartz/quartzCommon.h
+@@ -51,20 +51,13 @@ typedef struct {
+ #define QUARTZ_PRIV(pScreen) \
+     ((QuartzScreenPtr)dixLookupPrivate(&pScreen->devPrivates, quartzScreenKey))
+ 
+-// Data stored at startup for Cocoa front end
+-extern int              quartzEventWriteFD;
+-
+ // User preferences used by Quartz modes
+ extern int              quartzUseSysBeep;
+-extern int              focusOnNewWindow;
+-extern int              quartzUseAGL;
+-extern int              quartzEnableKeyEquivalents;
+ extern int              quartzFullscreenDisableHotkeys;
+ extern int              quartzOptionSendsAlt;
+ 
+ // Other shared data
+ extern int              quartzServerVisible;
+-extern int              quartzServerQuitting;
+ extern DevPrivateKeyRec quartzScreenKeyRec;
+ #define quartzScreenKey (&quartzScreenKeyRec)
+ extern int              aquaMenuBarHeight;
+@@ -72,14 +65,6 @@ extern int              aquaMenuBarHeight;
+ // Name of GLX bundle for native OpenGL
+ extern const char      *quartzOpenGLBundle;
+ 
+-void QuartzReadPreferences(void);
+-void QuartzMessageMainThread(unsigned msg, void *data, unsigned length);
+-void QuartzMessageServerThread(int type, int argc, ...);
+-void QuartzSetWindowMenu(int nitems, const char **items,
+-                         const char *shortcuts);
+-void QuartzFSCapture(void);
+-void QuartzFSRelease(void);
+-int  QuartzFSUseQDCursor(int depth);
+ void QuartzBlockHandler(pointer blockData, OSTimePtr pTimeout, pointer pReadmask);
+ void QuartzWakeupHandler(pointer blockData, int result, pointer pReadmask);
+ 
+-- 
+1.7.1
+

Added: trunk/dports/x11/xorg-server-devel/files/0006-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0006-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0006-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch	2010-06-16 20:18:47 UTC (rev 68877)
@@ -0,0 +1,164 @@
+From 29e41824960c0f7ccd4da39eb33c570cad41ed20 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 6/7] Workaround the GC clipping problem in miPaintWindow and add some debugging output.
+
+Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
+---
+ mi/miexpose.c |  105 +++++++++++++++++++++++++++++++++++++++++++++++++++------
+ 1 files changed, 94 insertions(+), 11 deletions(-)
+
+diff --git xorg-server-1.8.99.901/mi/miexpose.c xorg-server-1.8.99.901/mi/miexpose.c
+index 94258b8..4f25c23 100644
+--- xorg-server-1.8.99.901/mi/miexpose.c
++++ xorg-server-1.8.99.901/mi/miexpose.c
+@@ -521,6 +521,7 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
+ void RootlessStartDrawing(WindowPtr pWin);
+ void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
+ Bool IsFramedWindow(WindowPtr pWin);
++#include "../fb/fb.h"
+ #endif 
+ 
+ void
+@@ -548,24 +549,37 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+     Bool	solid = TRUE;
+     DrawablePtr	drawable = &pWin->drawable;
+ 
++#ifdef XQUARTZ_CLIP_DEBUG
++    ErrorF("START %d BS %d (pR = %ld)\n", what, pWin->backgroundState, ParentRelative);
++    ErrorF("      Rgn: %d %d %d %d\n", prgn->extents.x1, prgn->extents.y1,
++	                               prgn->extents.x2 - prgn->extents.x1,
++	                               prgn->extents.y2 - prgn->extents.y1);
++    ErrorF("      Win: %d %d (%d %d) %d %d\n", pWin->origin.x, pWin->origin.y,
++	                                       pWin->winSize.extents.x1, pWin->winSize.extents.y1,
++	                                       pWin->winSize.extents.x2 - pWin->winSize.extents.x1,
++					       pWin->winSize.extents.y2 - pWin->winSize.extents.y1);
++    ErrorF("     Draw: %d %d %d %d\n", pWin->drawable.x, pWin->drawable.y,
++				       pWin->drawable.width, pWin->drawable.height);
++#endif
++
+ #ifdef ROOTLESS
+     if(!drawable || drawable->type == UNDRAWABLE_WINDOW)
+ 	return;
+-
+-    if(IsFramedWindow(pWin)) {
+-        RootlessStartDrawing(pWin);
+-        RootlessDamageRegion(pWin, prgn);
+-    
+-        if(pWin->backgroundState == ParentRelative) {
+-            if((what == PW_BACKGROUND) || 
+-               (what == PW_BORDER && !pWin->borderIsPixel))
+-                RootlessSetPixmapOfAncestors(pWin);
+-        }
+-    }
+ #endif
+     
+     if (what == PW_BACKGROUND)
+     {
++#ifdef ROOTLESS
++	if(IsFramedWindow(pWin)) {
++	    RootlessStartDrawing(pWin);
++	    RootlessDamageRegion(pWin, prgn);
++
++	    if(pWin->backgroundState == ParentRelative) {
++		RootlessSetPixmapOfAncestors(pWin);
++	    }
++	}
++#endif
++
+ 	while (pWin->backgroundState == ParentRelative)
+ 	    pWin = pWin->parent;
+ 
+@@ -587,6 +601,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+     {
+ 	PixmapPtr   pixmap;
+ 
++#ifdef ROOTLESS
++	if(IsFramedWindow(pWin)) {
++	    RootlessStartDrawing(pWin);
++	    RootlessDamageRegion(pWin, prgn);
++	    
++	    if(!pWin->borderIsPixel &&
++		pWin->backgroundState == ParentRelative) {
++		RootlessSetPixmapOfAncestors(pWin);
++	    }
++	}
++#endif
++
+ 	tile_x_off = drawable->x;
+ 	tile_y_off = drawable->y;
+ 	
+@@ -595,6 +621,12 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+ 	    return;
+ 	pixmap = (*pScreen->GetWindowPixmap) ((WindowPtr) drawable);
+ 	drawable = &pixmap->drawable;
++
++#ifdef XQUARTZ_CLIP_DEBUG
++	ErrorF("     Draw: %d %d %d %d\n",
++	       drawable->x, drawable->y, drawable->width, drawable->height);    
++#endif
++	
+ #ifdef COMPOSITE
+ 	draw_x_off = pixmap->screen_x;
+ 	draw_y_off = pixmap->screen_y;
+@@ -657,6 +689,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+     ChangeGC (NullClient, pGC, gcmask, gcval);
+     ValidateGC (drawable, pGC);
+ 
++#ifdef XQUARTZ_CLIP_DEBUG
++    ErrorF("       GC: %d %d %d %d\n",
++	   pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
++	   pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
++	   pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);
++#endif
++    
++#ifdef XQUARTZ
++    /* Looks like our clipping isn't set right for some reason:
++     * http://xquartz.macosforge.org/trac/ticket/290
++     */
++    if(what == PW_BORDER) {
++
++#if 0
++	if(solid) {
++#if 1
++	    fbFillRegionSolid(&pWin->drawable,
++			      prgn,
++			      0,
++			      fbReplicatePixel(fill.pixel,
++					       pWin->drawable.bitsPerPixel));
++#else
++	    fbFillRegionSolid(drawable,
++			      prgn,
++			      0,
++			      fbReplicatePixel(fill.pixel,
++					       drawable->bitsPerPixel));
++#endif
++	    return;
++	}
++#endif
++    
++	pGC->pCompositeClip->extents.x1 += prgn->extents.x1;
++	pGC->pCompositeClip->extents.y1 += prgn->extents.y1;
++	pGC->pCompositeClip->extents.x2 += prgn->extents.x1;
++	pGC->pCompositeClip->extents.y2 += prgn->extents.y1;
++	
++	if(pGC->pCompositeClip->extents.x2 > drawable->pScreen->width)
++	    pGC->pCompositeClip->extents.x2 = drawable->pScreen->width;
++	if(pGC->pCompositeClip->extents.y2 > drawable->pScreen->height)
++	    pGC->pCompositeClip->extents.y2 = drawable->pScreen->height;
++    }
++#endif
++
++#ifdef XQUARTZ_CLIP_DEBUG
++    ErrorF("       GC: %d %d %d %d\n",
++	   pGC->pCompositeClip->extents.x1, pGC->pCompositeClip->extents.y1,
++	   pGC->pCompositeClip->extents.x2 - pGC->pCompositeClip->extents.x1,
++	   pGC->pCompositeClip->extents.y2 - pGC->pCompositeClip->extents.y1);    
++#endif
++
+     numRects = RegionNumRects(prgn);
+     pbox = RegionRects(prgn);
+     for (i= numRects; --i >= 0; pbox++, prect++)
+-- 
+1.7.1
+

Added: trunk/dports/x11/xorg-server-devel/files/0007-fb-Revert-fb-changes-that-broke-XQuartz.patch
===================================================================
--- trunk/dports/x11/xorg-server-devel/files/0007-fb-Revert-fb-changes-that-broke-XQuartz.patch	                        (rev 0)
+++ trunk/dports/x11/xorg-server-devel/files/0007-fb-Revert-fb-changes-that-broke-XQuartz.patch	2010-06-16 20:18:47 UTC (rev 68877)
@@ -0,0 +1,231 @@
+From 383ca613f5f71ad5058d7845ebf55051a07d66c5 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 7/7] 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     |    7 +----
+ fb/fbpict.c |   72 ++++++++++++++++++-----------------------------------------
+ fb/fbtrap.c |    6 +---
+ 3 files changed, 26 insertions(+), 59 deletions(-)
+
+diff --git xorg-server-1.8.99.901/fb/fb.h xorg-server-1.8.99.901/fb/fb.h
+index a06f98b..3b9efea 100644
+--- xorg-server-1.8.99.901/fb/fb.h
++++ xorg-server-1.8.99.901/fb/fb.h
+@@ -2080,11 +2080,8 @@ fbFillRegionSolid (DrawablePtr	pDrawable,
+ 		   FbBits	xor);
+ 
+ extern _X_EXPORT pixman_image_t *
+-image_from_pict (PicturePtr	pict,
+-		 Bool		has_clip,
+-		 int		*xoff,
+-		 int		*yoff);
+-
++image_from_pict (PicturePtr pict,
++		 Bool       has_clip);
+ extern _X_EXPORT void free_pixman_pict (PicturePtr, pixman_image_t *);
+ 
+ #endif /* _FB_H_ */
+diff --git xorg-server-1.8.99.901/fb/fbpict.c xorg-server-1.8.99.901/fb/fbpict.c
+index 26cdc0d..f2ddb63 100644
+--- xorg-server-1.8.99.901/fb/fbpict.c
++++ xorg-server-1.8.99.901/fb/fbpict.c
+@@ -156,24 +156,19 @@ fbComposite (CARD8      op,
+ 	     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, xSrc - xDst, ySrc - yDst, width, height);
+     if (pMask)
+ 	miCompositeSourceValidate (pMask, xMask - xDst, yMask - yDst, width, height);
+     
+-    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,
++				xSrc, ySrc, xMask, yMask, xDst, yDst,
+ 				width, height);
+     }
+ 
+@@ -271,22 +266,22 @@ create_conical_gradient_image (PictGradient *gradient)
+ 
+ static pixman_image_t *
+ create_bits_picture (PicturePtr pict,
+-		     Bool       has_clip,
+-		     int	*xoff,
+-		     int	*yoff)
++		     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 (
+ 	pict->format,
+-	pixmap->drawable.width, pixmap->drawable.height,
++	pict->pDrawable->width, pict->pDrawable->height,
+ 	(uint32_t *)bits, stride * sizeof (FbStride));
+     
+     
+@@ -312,52 +307,30 @@ create_bits_picture (PicturePtr pict,
+ 	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 void
+-set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
++set_image_properties (pixman_image_t *image, PicturePtr pict)
+ {
+     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, (pixman_transform_t *)pict->transform);
+     }
+     
+     switch (pict->repeatType)
+@@ -384,8 +357,7 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int
+     
+     if (pict->alphaMap)
+     {
+-	int alpha_xoff, alpha_yoff;
+-	pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, FALSE, &alpha_xoff, &alpha_yoff);
++	pixman_image_t *alpha_map = image_from_pict (pict->alphaMap, TRUE);
+ 	
+ 	pixman_image_set_alpha_map (
+ 	    image, alpha_map, pict->alphaOrigin.x, pict->alphaOrigin.y);
+@@ -418,7 +390,8 @@ set_image_properties (pixman_image_t *image, PicturePtr pict, Bool has_clip, int
+ }
+ 
+ pixman_image_t *
+-image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
++image_from_pict (PicturePtr pict,
++		 Bool has_clip)
+ {
+     pixman_image_t *image = NULL;
+ 
+@@ -427,7 +400,7 @@ image_from_pict (PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+ 
+     if (pict->pDrawable)
+     {
+-	image = create_bits_picture (pict, has_clip, xoff, yoff);
++	image = create_bits_picture (pict, has_clip);
+     }
+     else if (pict->pSourcePict)
+     {
+@@ -448,11 +421,10 @@ image_from_pict (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);
++	set_image_properties (image, pict);
+     
+     return image;
+ }
+diff --git xorg-server-1.8.99.901/fb/fbtrap.c xorg-server-1.8.99.901/fb/fbtrap.c
+index 9f5c39f..9c55236 100644
+--- xorg-server-1.8.99.901/fb/fbtrap.c
++++ xorg-server-1.8.99.901/fb/fbtrap.c
+@@ -38,8 +38,7 @@ fbAddTraps (PicturePtr	pPicture,
+ 	    int		ntrap,
+ 	    xTrap	*traps)
+ {
+-    int image_xoff, image_yoff;
+-    pixman_image_t *image = image_from_pict (pPicture, FALSE, &image_xoff, &image_yoff);
++    pixman_image_t *image = image_from_pict (pPicture, FALSE);
+ 
+     if (!image)
+ 	return;
+@@ -55,8 +54,7 @@ fbRasterizeTrapezoid (PicturePtr    pPicture,
+ 		      int	    x_off,
+ 		      int	    y_off)
+ {
+-    int	mask_xoff, mask_yoff;
+-    pixman_image_t *image = image_from_pict (pPicture, FALSE, &mask_xoff, &mask_yoff);
++    pixman_image_t *image = image_from_pict (pPicture, FALSE);
+ 
+     if (!image)
+ 	return;
+-- 
+1.7.1
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100616/ebe1e71b/attachment-0001.html>


More information about the macports-changes mailing list