[arch-commits] Commit in xorg-server/trunk (5 files)
Jan de Groot
jgc at archlinux.org
Tue Aug 25 21:17:43 UTC 2009
Date: Tuesday, August 25, 2009 @ 17:17:43
Author: jgc
Revision: 50387
upgpkg: xorg-server 1.6.3-4
Add some patches from the server16branch wiki page
Added:
xorg-server/trunk/dix-dpmsfixes-idletime.patch
xorg-server/trunk/glx-bug21132.patch
xorg-server/trunk/glx-cleanup.patch
xorg-server/trunk/xext-bug23100.patch
Modified:
xorg-server/trunk/PKGBUILD
------------------------------+
PKGBUILD | 16 +++++++++-
dix-dpmsfixes-idletime.patch | 25 ++++++++++++++++
glx-bug21132.patch | 27 +++++++++++++++++
glx-cleanup.patch | 46 +++++++++++++++++++++++++++++
xext-bug23100.patch | 64 +++++++++++++++++++++++++++++++++++++++++
5 files changed, 177 insertions(+), 1 deletion(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2009-08-25 20:33:20 UTC (rev 50386)
+++ PKGBUILD 2009-08-25 21:17:43 UTC (rev 50387)
@@ -4,7 +4,7 @@
pkgname=xorg-server
pkgver=1.6.3
-pkgrel=3
+pkgrel=4
pkgdesc="X.Org X servers"
arch=('i686' 'x86_64')
license=('custom')
@@ -20,12 +20,20 @@
xorg-redhat-die-ugly-pattern-die-die-die.patch
hal-init-failed.patch
xext-fix-sync-transitions.patch
+ xext-bug23100.patch
+ dix-dpmsfixes-idletime.patch
+ glx-bug21132.patch
+ glx-cleanup.patch
xvfb-run
xvfb-run.1)
md5sums=('0af168abeefa6579cab20387f75c0c7a'
'1a336eb22e27cbf443ec5a2ecddfa93c'
'0f30199da182c531eabd5bbf1c2707e3'
'2171fbbdb0b4c51a60ad0944351cd910'
+ 'e9092737cd87aee57013a5d4dcc0e2d4'
+ '521980433509b389beb9004b2f5236e4'
+ '3f2b2576332754a3dc2c24a10e55caa7'
+ '92e17943a7300417d6576dd30eeef180'
'52fd3effd80d7bc6c1660d4ecf23d31c'
'376c70308715cd2643f7bff936d9934b')
@@ -40,6 +48,12 @@
# Fix issue with gnome-power-manager random screen blanking
patch -Np1 -i "${srcdir}/xext-fix-sync-transitions.patch" || return 1
+ # Fixes from http://wiki.x.org/wiki/Server16Branch
+ patch -Np1 -i "${srcdir}/xext-bug23100.patch" || return 1
+ patch -Np1 -i "${srcdir}/dix-dpmsfixes-idletime.patch" || return 1
+ patch -Np1 -i "${srcdir}/glx-bug21132.patch" || return 1
+ patch -Np1 -i "${srcdir}/glx-cleanup.patch" || return 1
+
# Fix dbus config path
sed -i -e 's/\$(sysconfdir)/\/etc/' config/Makefile.* || return 1
Added: dix-dpmsfixes-idletime.patch
===================================================================
--- dix-dpmsfixes-idletime.patch (rev 0)
+++ dix-dpmsfixes-idletime.patch 2009-08-25 21:17:43 UTC (rev 50387)
@@ -0,0 +1,25 @@
+From 6b5978dcf1f7ac3ecc2f22df06f7000f360e2066 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard at hughsie.com>
+Date: Mon, 17 Aug 2009 08:15:32 +0000
+Subject: Do not reset lastDeviceEventTime when we do dixSaveScreens
+
+When we turn off DPMS with DPMSModeOff and do dixSaveScreens, don't reset the
+event time else session clients using IDLETIME will be reset.
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+diff --git a/dix/window.c b/dix/window.c
+index 32e26d9..1a645f6 100644
+--- a/dix/window.c
++++ b/dix/window.c
+@@ -3128,8 +3128,6 @@ dixSaveScreens(ClientPtr client, int on, int mode)
+
+ if (on == SCREEN_SAVER_FORCER)
+ {
+- UpdateCurrentTimeIf();
+- lastDeviceEventTime = currentTime;
+ if (mode == ScreenSaverReset)
+ what = SCREEN_SAVER_OFF;
+ else
+--
+cgit v0.8.2
Added: glx-bug21132.patch
===================================================================
--- glx-bug21132.patch (rev 0)
+++ glx-bug21132.patch 2009-08-25 21:17:43 UTC (rev 50387)
@@ -0,0 +1,27 @@
+From 2075d4bf9e53b8baef0b919da6c44771220cd4a5 Mon Sep 17 00:00:00 2001
+From: Michel Dänzer <daenzer at vmware.com>
+Date: Thu, 14 May 2009 09:46:41 +0000
+Subject: glx: If a destroyed window is bound to the current context, make it not current.
+
+Avoids subsequent crashes due to stale pointers to the DrawableRec, see
+https://bugs.freedesktop.org/show_bug.cgi?id=21132#c15 and previous comments.
+
+Signed-off-by: Michel Dänzer <daenzer at vmware.com>
+---
+diff --git a/glx/glxext.c b/glx/glxext.c
+index 93391e9..6bc7bef 100644
+--- a/glx/glxext.c
++++ b/glx/glxext.c
+@@ -126,6 +126,10 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid)
+ __GLXcontext *c;
+
+ for (c = glxAllContexts; c; c = c->next) {
++ if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
++ (*c->loseCurrent)(c);
++ __glXFlushContextCache();
++ }
+ if (c->drawPriv == glxPriv)
+ c->drawPriv = NULL;
+ if (c->readPriv == glxPriv)
+--
+cgit v0.8.2
Added: glx-cleanup.patch
===================================================================
--- glx-cleanup.patch (rev 0)
+++ glx-cleanup.patch 2009-08-25 21:17:43 UTC (rev 50387)
@@ -0,0 +1,46 @@
+From 3020b1d43e34fca08cd51f7c7c8ed51497d49ef3 Mon Sep 17 00:00:00 2001
+From: Michel Dänzer <daenzer at vmware.com>
+Date: Tue, 23 Jun 2009 14:45:40 +0000
+Subject: glx: Clean up more thoroughly if the drawable of a current context goes away.
+
+Fixes crash when restarting compiz, due to cl->currentContexts[x] being stale.
+---
+diff --git a/glx/glxext.c b/glx/glxext.c
+index 520eb2e..a571ec9 100644
+--- a/glx/glxext.c
++++ b/glx/glxext.c
+@@ -128,8 +128,31 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid)
+
+ for (c = glxAllContexts; c; c = c->next) {
+ if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
++ int i;
++
+ (*c->loseCurrent)(c);
+- __glXFlushContextCache();
++ c->isCurrent = GL_FALSE;
++ if (c == __glXLastContext)
++ __glXFlushContextCache();
++
++ for (i = 1; i < currentMaxClients; i++) {
++ if (clients[i]) {
++ __GLXclientState *cl = glxGetClient(clients[i]);
++
++ if (cl->inUse) {
++ int j;
++
++ for (j = 0; j < cl->numCurrentContexts; j++) {
++ if (cl->currentContexts[j] == c)
++ cl->currentContexts[j] = NULL;
++ }
++ }
++ }
++ }
++
++ if (!c->idExists) {
++ __glXFreeContext(c);
++ }
+ }
+ if (c->drawPriv == glxPriv)
+ c->drawPriv = NULL;
+--
+cgit v0.8.2
Added: xext-bug23100.patch
===================================================================
--- xext-bug23100.patch (rev 0)
+++ xext-bug23100.patch 2009-08-25 21:17:43 UTC (rev 50387)
@@ -0,0 +1,64 @@
+diff -ruN xorg-server-1.6.3/Xext/xtest.c xorg-server-1.6.3.patched/Xext/xtest.c
+--- xorg-server-1.6.3/Xext/xtest.c 2009-07-26 22:56:57.000000000 +0200
++++ xorg-server-1.6.3.patched/Xext/xtest.c 2009-08-25 22:52:11.000000000 +0200
+@@ -54,6 +54,11 @@
+ extern int DeviceValuator;
+ extern int DeviceMotionNotify;
+
++/* XTest events are sent during request processing and may be interruped by
++ * a SIGIO. We need a separate event list to avoid events overwriting each
++ * other's memory */
++static EventListPtr xtest_evlist;
++
+ #ifdef PANORAMIX
+ #include "panoramiX.h"
+ #include "panoramiXsrv.h"
+@@ -81,6 +86,8 @@
+ AddExtension(XTestExtensionName, 0, 0,
+ ProcXTestDispatch, SProcXTestDispatch,
+ NULL, StandardMinorOpcode);
++
++ xtest_evlist = InitEventList(GetMaximumEventsNum());
+ }
+
+ static int
+@@ -157,7 +164,6 @@
+ int valuators[MAX_VALUATORS] = {0};
+ int numValuators = 0;
+ int firstValuator = 0;
+- EventListPtr events;
+ int nevents = 0;
+ int i;
+ int base = 0;
+@@ -384,27 +390,26 @@
+ if (screenIsSaved == SCREEN_SAVER_ON)
+ dixSaveScreens(serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
+
+- GetEventList(&events);
+ switch(type) {
+ case MotionNotify:
+- nevents = GetPointerEvents(events, dev, type, 0, flags,
++ nevents = GetPointerEvents(xtest_evlist, dev, type, 0, flags,
+ firstValuator, numValuators, valuators);
+ break;
+ case ButtonPress:
+ case ButtonRelease:
+- nevents = GetPointerEvents(events, dev, type, ev->u.u.detail,
++ nevents = GetPointerEvents(xtest_evlist, dev, type, ev->u.u.detail,
+ flags, firstValuator,
+ numValuators, valuators);
+ break;
+ case KeyPress:
+ case KeyRelease:
+- nevents = GetKeyboardEvents(events, dev, type, ev->u.u.detail);
++ nevents = GetKeyboardEvents(xtest_evlist, dev, type, ev->u.u.detail);
+ break;
+ }
+
+ OsBlockSignals();
+ for (i = 0; i < nevents; i++)
+- mieqEnqueue(dev, (events+i)->event);
++ mieqEnqueue(dev, (xtest_evlist+i)->event);
+ OsReleaseSignals();
+
+ return client->noClientException;
More information about the arch-commits
mailing list