rpms/xorg-x11-server/devel xserver-1.6.99-git-e94c7c42ce.patch, NONE, 1.1 xorg-x11-server.spec, 1.468, 1.469 xserver-1.6.99-vga-arb.patch, 1.5, 1.6

Dave Airlie airlied at fedoraproject.org
Tue Aug 11 04:13:13 UTC 2009


Author: airlied

Update of /cvs/pkgs/rpms/xorg-x11-server/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv24069

Modified Files:
	xorg-x11-server.spec xserver-1.6.99-vga-arb.patch 
Added Files:
	xserver-1.6.99-git-e94c7c42ce.patch 
Log Message:
* Tue Aug 11 2009 Dave Airlie <airlied at redhat.com> 1.6.99-32.20090807
- update to latest -git for EXA fixes


xserver-1.6.99-git-e94c7c42ce.patch:
 configure.ac              |    2 
 exa/exa.c                 |    2 
 exa/exa_migration_mixed.c |   41 ++++++++++---------
 exa/exa_mixed.c           |   44 +++++++++++----------
 mi/mieq.c                 |   95 +++++++++++++++++++++++++---------------------
 5 files changed, 99 insertions(+), 85 deletions(-)

--- NEW FILE xserver-1.6.99-git-e94c7c42ce.patch ---
>From 1dd898dc07dadbb2f115bbb177bb52d05bea2df3 Mon Sep 17 00:00:00 2001
From: Dave Airlie <airlied at redhat.com>
Date: Mon, 3 Aug 2009 14:09:32 +1000
Subject: TO git xserver-1.6.99-git-e94c7c42ce.patch

---
diff --git a/configure.ac b/configure.ac
index f19b6fe..69d6abb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -709,7 +709,7 @@ XEXTXORG_LIB='$(top_builddir)/Xext/libXextbuiltin.la'
 
 dnl Core modules for most extensions, et al.
 REQUIRED_MODULES="[randrproto >= 1.2.99.3] [renderproto >= 0.11] [fixesproto >= 4.0] [damageproto >= 1.1] xcmiscproto [xextproto >= 7.0.99.3] [xproto >= 7.0.13] [xtrans >= 1.2.2] bigreqsproto resourceproto fontsproto [inputproto >= 1.9.99.15] [kbproto >= 1.0.3]"
-REQUIRED_LIBS="xfont xau fontenc [pixman-1 >= 0.15.14]"
+REQUIRED_LIBS="xfont xau [pixman-1 >= 0.15.14]"
 
 dnl HAVE_DBUS is true if we actually have the D-Bus library, whereas
 dnl CONFIG_DBUS_API is true if we want to enable the D-Bus config
diff --git a/exa/exa.c b/exa/exa.c
index c8fe12e..483e3b4 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -336,7 +336,7 @@ ExaDoPrepareAccess(DrawablePtr pDrawable, int index)
     if (!offscreen) {
 	/* Do we need to allocate our system buffer? */
 	if ((pExaScr->info->flags & EXA_HANDLES_PIXMAPS) && (pExaScr->info->flags & EXA_MIXED_PIXMAPS)) {
-	    if (!pExaPixmap->sys_ptr) {
+	    if (!pExaPixmap->sys_ptr && !exaPixmapIsPinned(pPixmap)) {
 		pExaPixmap->sys_ptr = malloc(pExaPixmap->sys_pitch * pDrawable->height);
 		if (!pExaPixmap->sys_ptr)
 		    FatalError("EXA: malloc failed for size %d bytes\n", pExaPixmap->sys_pitch * pDrawable->height);
diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
index 915bed9..ed0cc14 100644
--- a/exa/exa_migration_mixed.c
+++ b/exa/exa_migration_mixed.c
@@ -32,32 +32,37 @@
 #include "exa.h"
 
 static void
-exaUploadFallback(PixmapPtr pPixmap, CARD8 *src, int src_pitch,
-	      CARD8 *dst, int dst_pitch)
- {
+exaUploadFallback(PixmapPtr pPixmap, CARD8 *src, int src_pitch)
+{
     ExaPixmapPriv(pPixmap);
     RegionPtr damage = DamageRegion (pExaPixmap->pDamage);
-    int i, cpp = pPixmap->drawable.bitsPerPixel / 8;
-    int bytes, nbox;
+    GCPtr pGC = GetScratchGC (pPixmap->drawable.depth,
+		pPixmap->drawable.pScreen);
+    int nbox, cpp = pPixmap->drawable.bitsPerPixel / 8;
+    DamagePtr backup = pExaPixmap->pDamage;
     BoxPtr pbox;
+    CARD8 *src2;
+
+    /* We don't want damage optimisations. */
+    pExaPixmap->pDamage = NULL;
+    ValidateGC (&pPixmap->drawable, pGC);
 
     pbox = REGION_RECTS(damage);
     nbox = REGION_NUM_RECTS(damage);
 
     while (nbox--) {
-	bytes = (pbox->x2 - pbox->x1) * cpp;
+	src2 = src + pbox->y1 * src_pitch + pbox->x1 * cpp;
 
-	src += pbox->y1 * src_pitch + pbox->x1 * cpp;
-	dst += pbox->y1 * dst_pitch + pbox->x1 * cpp;
-
-	for (i = pbox->y2 - pbox->y1; i; i--) {
-	    memcpy (dst, src, bytes);
-	    src += src_pitch;
-	    dst += dst_pitch;
-	}
+	ExaCheckPutImage(&pPixmap->drawable, pGC,
+	    pPixmap->drawable.depth, pbox->x1, pbox->y1,
+	    pbox->x2 - pbox->x1, pbox->y2 - pbox->y1, 0,
+	    ZPixmap, (char*) src2);
 
 	pbox++;
     }
+
+    FreeScratchGC (pGC);
+    pExaPixmap->pDamage = backup;
 }
 
 void
@@ -99,7 +104,8 @@ exaCreateDriverPixmap_mixed(PixmapPtr pPixmap)
 	return;
 
     pExaPixmap->offscreen = TRUE;
-    pExaPixmap->sys_ptr = NULL;
+    pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr = NULL;
+    pExaPixmap->sys_pitch = pPixmap->devKind = 0;
 
     pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
     (*pScreen->ModifyPixmapHeader)(pPixmap, w, h, 0, 0,
@@ -130,10 +136,7 @@ exaCreateDriverPixmap_mixed(PixmapPtr pPixmap)
     goto finish;
 
 fallback:
-    ExaDoPrepareAccess(&pPixmap->drawable, EXA_PREPARE_DEST);
-    exaUploadFallback(pPixmap, sys_buffer, sys_pitch, pPixmap->devPrivate.ptr,
-	exaGetPixmapPitch(pPixmap));
-    exaFinishAccess(&pPixmap->drawable, EXA_PREPARE_DEST);
+    exaUploadFallback(pPixmap, sys_buffer, sys_pitch);
 
 finish:
     free(sys_buffer);
diff --git a/exa/exa_mixed.c b/exa/exa_mixed.c
index 47fa6d4..7ba62ea 100644
--- a/exa/exa_mixed.c
+++ b/exa/exa_mixed.c
@@ -82,12 +82,12 @@ exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth,
     datasize = h * paddedWidth;
 
     /* We will allocate the system pixmap later if needed. */
+    pPixmap->devPrivate.ptr = NULL;
     pExaPixmap->sys_ptr = NULL;
     pExaPixmap->sys_pitch = paddedWidth;
 
     pExaPixmap->area = NULL;
     pExaPixmap->offscreen = FALSE;
-    pExaPixmap->score = EXA_PIXMAP_SCORE_INIT;
     pExaPixmap->fb_ptr = NULL;
     pExaPixmap->pDamage = NULL;
 
@@ -95,19 +95,19 @@ exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth,
     exaSetAccelBlock(pExaScr, pExaPixmap,
 	w, h, bpp);
 
+    /* Avoid freeing sys_ptr. */
+    pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
+
+    (*pScreen->ModifyPixmapHeader)(pPixmap, w, h, 0, 0,
+				    paddedWidth, NULL);
+
+    /* We want to be able to transfer the pixmap to driver memory later on. */
+    pExaPixmap->score = EXA_PIXMAP_SCORE_INIT;
+
     /* A scratch pixmap will become a driver pixmap right away. */
     if (!w || !h) {
 	exaCreateDriverPixmap_mixed(pPixmap);
     } else {
-	/* Avoid freeing sys_ptr. */
-	pExaPixmap->score = EXA_PIXMAP_SCORE_PINNED;
-
-	(*pScreen->ModifyPixmapHeader)(pPixmap, w, h, 0, 0,
-					paddedWidth, NULL);
-
-	/* We want to be able to copy the pixmap to driver memory later on. */
-	pExaPixmap->score = EXA_PIXMAP_SCORE_INIT;
-
 	/* Set up damage tracking */
 	pExaPixmap->pDamage = DamageCreate (NULL, NULL,
 					    DamageReportNone, TRUE,
@@ -145,20 +145,22 @@ exaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
     pExaPixmap = ExaGetPixmapPriv(pPixmap);
 
     if (pExaPixmap) {
-        if (pPixData) {
-	    if (!exaPixmapIsPinned(pPixmap)) {
-		free(pExaPixmap->sys_ptr);
-
-		/* We no longer need this. */
-		if (pExaPixmap->pDamage) {
-		    DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
-		    DamageDestroy(pExaPixmap->pDamage);
-		    pExaPixmap->pDamage = NULL;
-		}
+	if (!exaPixmapIsPinned(pPixmap)) {
+	    free(pExaPixmap->sys_ptr);
+	    pExaPixmap->sys_ptr = pPixmap->devPrivate.ptr = NULL;
+	    pExaPixmap->sys_pitch = pPixmap->devKind = 0;
+
+	    /* We no longer need this. */
+	    if (pExaPixmap->pDamage) {
+		DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
+		DamageDestroy(pExaPixmap->pDamage);
+		pExaPixmap->pDamage = NULL;
 	    }
-            pExaPixmap->sys_ptr = pPixData;
 	}
 
+        if (pPixData)
+            pExaPixmap->sys_ptr = pPixData;
+
         if (devKind > 0)
             pExaPixmap->sys_pitch = devKind;
 
diff --git a/mi/mieq.c b/mi/mieq.c
index 6ec2dba..1b81e4d 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -159,26 +159,26 @@ mieqEnqueue(DeviceIntPtr pDev, InternalEvent *e)
 
     if (isMotion && isMotion == miEventQueue.lastMotion &&
         oldtail != miEventQueue.head) {
-	oldtail = (oldtail - 1) % QUEUE_SIZE;
+        oldtail = (oldtail - 1) % QUEUE_SIZE;
     }
     else {
-	static int stuck = 0;
-	/* Toss events which come in late.  Usually this means your server's
+        static int stuck = 0;
+        /* Toss events which come in late.  Usually this means your server's
          * stuck in an infinite loop somewhere, but SIGIO is still getting
          * handled. */
-	if (((oldtail + 1) % QUEUE_SIZE) == miEventQueue.head) {
-	    if (!stuck) {
+        if (((oldtail + 1) % QUEUE_SIZE) == miEventQueue.head) {
+            if (!stuck) {
                 ErrorF("[mi] EQ overflowing. The server is probably stuck "
                         "in an infinite loop.\n");
-		xorg_backtrace();
-		stuck = 1;
-	    }
+                xorg_backtrace();
+                stuck = 1;
+            }
 #ifdef XQUARTZ
-	    pthread_mutex_unlock(&miEventQueueMutex);
+            pthread_mutex_unlock(&miEventQueueMutex);
 #endif
-	    return;
+	        return;
         }
-	stuck = 0;
+        stuck = 0;
     }
 
     evlen = e->any.length;
@@ -225,7 +225,7 @@ mieqSwitchScreen(DeviceIntPtr pDev, ScreenPtr pScreen, Bool fromDIX)
 #endif
     EnqueueScreen(pDev) = pScreen;
     if (fromDIX)
-	DequeueScreen(pDev) = pScreen;
+        DequeueScreen(pDev) = pScreen;
 #ifdef XQUARTZ
     pthread_mutex_unlock(&miEventQueueMutex);
 #endif
@@ -267,8 +267,8 @@ ChangeDeviceID(DeviceIntPtr dev, InternalEvent* event)
             event->device.deviceid = dev->id;
             break;
 #if XFreeXDGA
-	case ET_DGAEvent:
-	    break;
+        case ET_DGAEvent:
+            break;
 #endif
         case ET_RawKeyPress:
         case ET_RawKeyRelease:
@@ -367,39 +367,48 @@ mieqProcessDeviceEvent(DeviceIntPtr dev,
     /* Custom event handler */
     handler = miEventQueue.handlers[event->any.type];
 
-    if (dev && screen && screen != DequeueScreen(dev) && !handler) {
-        /* Assumption - screen switching can only occur on motion events. */
-        DequeueScreen(dev) = screen;
-        x = event->device.root_x;
-        y = event->device.root_y;
-        NewCurrentScreen (dev, DequeueScreen(dev), x, y);
+    switch (event->any.type) {
+        /* Catch events that include valuator information and check if they
+         * are changing the screen */
+        case ET_Motion:
+        case ET_KeyPress:
+        case ET_KeyRelease:
+        case ET_ButtonPress:
+        case ET_ButtonRelease:
+            if (dev && screen && screen != DequeueScreen(dev) && !handler) {
+                DequeueScreen(dev) = screen;
+                x = event->device.root_x;
+                y = event->device.root_y;
+                NewCurrentScreen (dev, DequeueScreen(dev), x, y);
+            }
+            break;
+        default:
+            break;
     }
-    else {
-        master = CopyGetMasterEvent(dev, event, &mevent);
+    master = CopyGetMasterEvent(dev, event, &mevent);
 
-        if (master)
-            master->u.lastSlave = dev;
+    if (master)
+        master->u.lastSlave = dev;
 
-        /* If someone's registered a custom event handler, let them
-         * steal it. */
-        if (handler)
-        {
-            int screenNum = dev && DequeueScreen(dev) ? DequeueScreen(dev)->myNum : (screen ? screen->myNum : 0);
-            handler(screenNum, event, dev);
-            /* Check for the SD's master in case the device got detached
-             * during event processing */
-            if (master && dev->u.master)
-                handler(screenNum, &mevent, master);
-        } else
-        {
-            /* process slave first, then master */
-            dev->public.processInputProc(event, dev);
+    /* If someone's registered a custom event handler, let them
+     * steal it. */
+    if (handler)
+    {
+        int screenNum = dev && DequeueScreen(dev) ? DequeueScreen(dev)->myNum : (screen ? screen->myNum : 0);
+        handler(screenNum, event, dev);
+        /* Check for the SD's master in case the device got detached
+         * during event processing */
+        if (master && dev->u.master)
+            handler(screenNum, &mevent, master);
+    } else
+    {
+        /* process slave first, then master */
+        dev->public.processInputProc(event, dev);
 
-            /* Check for the SD's master in case the device got detached
-             * during event processing */
-            if (master && dev->u.master)
-                master->public.processInputProc(&mevent, master);
-        }
+        /* Check for the SD's master in case the device got detached
+         * during event processing */
+        if (master && dev->u.master)
+            master->public.processInputProc(&mevent, master);
     }
 }
 


Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-server/devel/xorg-x11-server.spec,v
retrieving revision 1.468
retrieving revision 1.469
diff -u -p -r1.468 -r1.469
--- xorg-x11-server.spec	11 Aug 2009 00:02:08 -0000	1.468
+++ xorg-x11-server.spec	11 Aug 2009 04:13:12 -0000	1.469
@@ -19,7 +19,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.6.99
-Release:   31.%{gitdate}%{?dist}
+Release:   32.%{gitdate}%{?dist}
 URL:       http://www.x.org
 License:   MIT
 Group:     User Interface/X
@@ -46,6 +46,7 @@ Source20:  http://svn.exactcode.de/t2/tr
 Source30: find-provides
 #define __find_provides {nil}
 
+Patch0: xserver-1.6.99-git-e94c7c42ce.patch
 Patch5: xserver-1.4.99-pic-libxf86config.patch
 Patch10: xserver-1.6.99-linkmap.patch
 
@@ -510,6 +511,9 @@ rm -rf $RPM_BUILD_ROOT
 %{xserver_source_dir}
 
 %changelog
+* Tue Aug 11 2009 Dave Airlie <airlied at redhat.com> 1.6.99-32.20090807
+- update to latest -git for EXA fixes
+
 * Mon Aug 10 2009 Adam Jackson <ajax at redhat.com> 1.6.99-31.20090807
 - Move libxf86config.a back to -server-devel
 - xserver-1.6.99-show-ugly-cursor.patch: Un-suppress the initial root cursor

xserver-1.6.99-vga-arb.patch:
 configure.ac                           |    1 
 hw/xfree86/common/Makefile.am          |    6 
 hw/xfree86/common/xf86Bus.c            |   15 
 hw/xfree86/common/xf86DPMS.c           |    4 
 hw/xfree86/common/xf86Init.c           |   11 
 hw/xfree86/common/xf86PM.c             |    6 
 hw/xfree86/common/xf86VGAarbiter.c     | 1151 +++++++++++++++++++++++++++++++++
 hw/xfree86/common/xf86VGAarbiter.h     |   48 +
 hw/xfree86/common/xf86VGAarbiterPriv.h |  266 +++++++
 hw/xfree86/common/xf86str.h            |    4 
 hw/xfree86/dri/dri.c                   |    7 
 hw/xfree86/dri2/dri2.c                 |    7 
 hw/xfree86/int10/generic.c             |    2 
 hw/xfree86/loader/sdksyms.sh           |    1 
 include/xorg-config.h.in               |    4 
 15 files changed, 1522 insertions(+), 11 deletions(-)

Index: xserver-1.6.99-vga-arb.patch
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-server/devel/xserver-1.6.99-vga-arb.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -p -r1.5 -r1.6
--- xserver-1.6.99-vga-arb.patch	5 Aug 2009 17:55:58 -0000	1.5
+++ xserver-1.6.99-vga-arb.patch	11 Aug 2009 04:13:13 -0000	1.6
@@ -267,7 +267,7 @@ index 0000000..13802cd
 +#include "pciaccess.h"
 +
 +#ifdef DEBUG
-+#error no, really, you don't want to do this
++#error "no, really, you dont want to do this"
 +#define DPRINT_S(x,y) ErrorF(x ": %i\n",y);
 +#define DPRINT(x) ErrorF(x "\n");
 +#else




More information about the fedora-extras-commits mailing list