* Tue Aug 11 2009 Dave Airlie <airlied@redhat.com> 1.6.99-32.20090807
- update to latest -git for EXA fixes
This commit is contained in:
parent
c04c4ead55
commit
b487c7de79
@ -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/trunk/package/xorg/xorg-server/xvfb-run.sh
|
||||
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@redhat.com> 1.6.99-32.20090807
|
||||
- update to latest -git for EXA fixes
|
||||
|
||||
* Mon Aug 10 2009 Adam Jackson <ajax@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
|
||||
|
331
xserver-1.6.99-git-e94c7c42ce.patch
Normal file
331
xserver-1.6.99-git-e94c7c42ce.patch
Normal file
@ -0,0 +1,331 @@
|
||||
From 1dd898dc07dadbb2f115bbb177bb52d05bea2df3 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@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);
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user