[arch-commits] Commit in xorg-server/trunk (5 files)
Jan de Groot
jgc at archlinux.org
Sat Nov 21 10:48:36 UTC 2009
Date: Saturday, November 21, 2009 @ 05:48:36
Author: jgc
Revision: 59194
upgpkg: xorg-server 1.7.1.902-1
Update to 1.7.2RC2
Apply window-pictures patch + band-aid to fix crashes and resulting slowdowns with nvidia drivers
Add gamma fix for KDM vtswitch
Reduce openssl library linking
Improve evdev processing
Added:
xorg-server/trunk/xserver-1.7.1-gamma-kdm-fix.patch
xorg-server/trunk/xserver-1.7.1-libcrypto.patch
xorg-server/trunk/xserver-1.7.1-nvidia-performance.patch
xorg-server/trunk/xserver-1.7.1-sigaction.patch
Modified:
xorg-server/trunk/PKGBUILD
----------------------------------------+
PKGBUILD | 33 ++++++++---
xserver-1.7.1-gamma-kdm-fix.patch | 34 +++++++++++
xserver-1.7.1-libcrypto.patch | 35 +++++++++++
xserver-1.7.1-nvidia-performance.patch | 58 +++++++++++++++++++
xserver-1.7.1-sigaction.patch | 91 +++++++++++++++++++++++++++++++
5 files changed, 244 insertions(+), 7 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2009-11-21 10:44:23 UTC (rev 59193)
+++ PKGBUILD 2009-11-21 10:48:36 UTC (rev 59194)
@@ -2,8 +2,8 @@
# Maintainer: Jan de Groot <jgc at archlinux.org>
pkgname=xorg-server
-pkgver=1.7.1.901
-pkgrel=2
+pkgver=1.7.1.902
+pkgrel=1
pkgdesc="X.Org X servers"
arch=('i686' 'x86_64')
license=('custom')
@@ -19,11 +19,19 @@
source=(${url}/releases/individual/xserver/${pkgname}-${pkgver}.tar.bz2
xorg-redhat-die-ugly-pattern-die-die-die.patch
xserver-1.7.1-window-pictures.patch
+ xserver-1.7.1-nvidia-performance.patch
+ xserver-1.7.1-libcrypto.patch
+ xserver-1.7.1-sigaction.patch
+ xserver-1.7.1-gamma-kdm-fix.patch
xvfb-run
xvfb-run.1)
-md5sums=('f6b874d3bd9350ef2f3c4a11c0096d2e'
+md5sums=('024dcbbcd617f76ee091fa383eea3202'
'1a336eb22e27cbf443ec5a2ecddfa93c'
'01507da1a18737a3a9202fbd00213f4c'
+ 'd5c6e2de2e15bcff98d69f4772ee09ac'
+ '957d429cad03ac87281b7e40d963497c'
+ '9de9025a8c93b57188fce137b3262d1e'
+ '8eae23916552e609c36ecae1827c2e9d'
'52fd3effd80d7bc6c1660d4ecf23d31c'
'376c70308715cd2643f7bff936d9934b')
@@ -32,15 +40,26 @@
# Get rid of the ugly pattern
patch -Np3 -i "${srcdir}/xorg-redhat-die-ugly-pattern-die-die-die.patch" || return 1
- # Fixes from http://wiki.x.org/wiki/Server17Branch
-
# http://cvs.fedora.redhat.com/viewvc/rpms/xorg-x11-server/F-12/xserver-1.7.1-window-pictures.patch?view=log
- # rev 1.4
- #patch -Np1 -i "${srcdir}/xserver-1.7.1-window-pictures.patch" || return 1
+ patch -Np1 -i "${srcdir}/xserver-1.7.1-window-pictures.patch" || return 1
+ # http://lists.x.org/archives/xorg-devel/2009-November/003569.html
+ patch -Np1 -i "${srcdir}/xserver-1.7.1-nvidia-performance.patch" || return 1
+
+ # http://cvs.fedora.redhat.com/viewvc/rpms/xorg-x11-server/F-12/xserver-1.7.1-libcrypto.patch?view=log
+ patch -Np1 -i "${srcdir}/xserver-1.7.1-libcrypto.patch" || return 1
+
+ # http://cvs.fedora.redhat.com/viewvc/rpms/xorg-x11-server/F-12/xserver-1.7.1-sigaction.patch?view=log
+ patch -Np1 -i "${srcdir}/xserver-1.7.1-sigaction.patch" || return 1
+
+ # http://cvs.fedora.redhat.com/viewvc/rpms/xorg-x11-server/F-12/xserver-1.7.1-gamma-kdm-fix.patch?view=log
+ patch -Np1 -i "${srcdir}/xserver-1.7.1-gamma-kdm-fix.patch" || return 1
+
# Fix dbus config path
sed -i -e 's/\$(sysconfdir)/\/etc/' config/Makefile.* || return 1
+ autoconf || return 1
+
./configure --prefix=/usr \
--enable-ipv6 \
--enable-dri \
Added: xserver-1.7.1-gamma-kdm-fix.patch
===================================================================
--- xserver-1.7.1-gamma-kdm-fix.patch (rev 0)
+++ xserver-1.7.1-gamma-kdm-fix.patch 2009-11-21 10:48:36 UTC (rev 59194)
@@ -0,0 +1,34 @@
+From acc64ce5be7383c09e88a23aab06ebc2403f2ca3 Mon Sep 17 00:00:00 2001
+From: Bill Nottingham <notting at redhat.com>
+Date: Fri, 6 Nov 2009 10:32:27 +1000
+Subject: [PATCH] fix KDM gamma issue on vt switch
+
+---
+ hw/xfree86/modes/xf86RandR12.c | 4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
+index 6ea9d26..ece12b9 100644
+--- a/hw/xfree86/modes/xf86RandR12.c
++++ b/hw/xfree86/modes/xf86RandR12.c
+@@ -1761,6 +1761,7 @@ xf86RandR12Init12 (ScreenPtr pScreen)
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ rrScrPrivPtr rp = rrGetScrPriv(pScreen);
+ XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
++ int i;
+
+ rp->rrGetInfo = xf86RandR12GetInfo12;
+ rp->rrScreenSetSize = xf86RandR12ScreenSetSize;
+@@ -1790,6 +1791,9 @@ xf86RandR12Init12 (ScreenPtr pScreen)
+ */
+ if (!xf86RandR12SetInfo12 (pScreen))
+ return FALSE;
++ for (i = 0; i < rp->numCrtcs; i++) {
++ xf86RandR12CrtcGetGamma(pScreen, rp->crtcs[i]);
++ }
+ return TRUE;
+ }
+
+--
+1.6.5.1
+
Added: xserver-1.7.1-libcrypto.patch
===================================================================
--- xserver-1.7.1-libcrypto.patch (rev 0)
+++ xserver-1.7.1-libcrypto.patch 2009-11-21 10:48:36 UTC (rev 59194)
@@ -0,0 +1,35 @@
+From 8875112f5c57ec5d575e717c5638fbc919145efb Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Mon, 16 Nov 2009 18:01:26 -0500
+Subject: [PATCH] configure: Only link against libcrypto
+
+openssl.pc will link you against libssl, which we don't need, and which
+brings in another seven libraries we also don't need. This is still
+bogus, we're really only trying to get a SHA1 routine, we could link it
+statically and be even better off.
+---
+ configure.ac | 6 ------
+ 1 files changed, 0 insertions(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index f69f97e..254d33d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1297,14 +1297,8 @@ if test "x$SHA1_LIB" = "x" ; then
+ fi
+
+ if test "x$SHA1_LIB" = "x" ; then
+- PKG_CHECK_EXISTS([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
+- [HAVE_OPENSSL_PKC=no])
+- if test "x$HAVE_OPENSSL_PKC" = xyes; then
+- REQUIRED_LIBS="$REQUIRED_LIBS openssl"
+- else
+ AC_CHECK_LIB([crypto], [SHA1_Init], [SHA1_LIB="-lcrypto"],
+ [AC_MSG_ERROR([OpenSSL must be installed in order to build the X server.])])
+- fi
+ fi
+
+ PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
+--
+1.6.5.2
+
Added: xserver-1.7.1-nvidia-performance.patch
===================================================================
--- xserver-1.7.1-nvidia-performance.patch (rev 0)
+++ xserver-1.7.1-nvidia-performance.patch 2009-11-21 10:48:36 UTC (rev 59194)
@@ -0,0 +1,58 @@
+This patch speeds up a simple test app that maps a 1x1 ARGB window from 11
+seconds to 0.005 seconds.
+
+This patch needs to be applied after
+http://cvs.fedora.redhat.com/viewvc/rpms/xorg-x11-server/F-12/xserver-1.7.1-window-pictures.patch?revision=1.4&view=markup
+or the server will still be subject to the corruption and crash bugs that
+e9aa61e introduced.
+
+ fb/fbpict.c | 27 ++++++++++++++++++++++++++-
+ 1 files changed, 26 insertions(+), 1 deletions(-)
+
+diff --git a/fb/fbpict.c b/fb/fbpict.c
+index 5c96427..5799e37 100644
+--- a/fb/fbpict.c
++++ b/fb/fbpict.c
+@@ -317,6 +317,27 @@ destroy_drawable (pixman_image_t *image, void *data)
+ pScreen->DestroyPixmap ((PixmapPtr)pDrawable);
+ }
+
++/*
++ * Returns TRUE when the specified window is fully contained within its bounding
++ * pixmap.
++ */
++static Bool
++window_is_fully_contained(WindowPtr pWin)
++{
++ PixmapPtr pBoundingPix = (*pWin->drawable.pScreen->GetWindowPixmap)(pWin);
++ int x = pWin->drawable.x, y = pWin->drawable.y;
++
++#ifdef COMPOSITE
++ /* Translate from screen coordinates to pixmap coordinates */
++ x -= pBoundingPix->screen_x;
++ y -= pBoundingPix->screen_y;
++#endif
++
++ return x >= 0 && y >= 0 &&
++ x + pWin->drawable.width <= pBoundingPix->drawable.width &&
++ y + pWin->drawable.height <= pBoundingPix->drawable.height;
++}
++
+ static pixman_image_t *
+ create_bits_picture (PicturePtr pict,
+ Bool has_clip,
+@@ -328,7 +349,11 @@ create_bits_picture (PicturePtr pict,
+ pixman_image_t *image;
+ DrawablePtr drawable;
+
+- if (is_src && pict->pDrawable->type == DRAWABLE_WINDOW)
++ /* Copy the source window if part of it lies outside its bounding pixmap to
++ * avoid reading outside that pixmap' bounds, since Pixman doesn't clip the
++ * source image per pixel */
++ if (is_src && pict->pDrawable->type == DRAWABLE_WINDOW &&
++ !window_is_fully_contained((WindowPtr)pict->pDrawable))
+ drawable = copy_drawable (pict->pDrawable);
+ else
+ drawable = pict->pDrawable;
+--
+1.6.3.3
Added: xserver-1.7.1-sigaction.patch
===================================================================
--- xserver-1.7.1-sigaction.patch (rev 0)
+++ xserver-1.7.1-sigaction.patch 2009-11-21 10:48:36 UTC (rev 59194)
@@ -0,0 +1,91 @@
+From 645de09fc84482a55b5234312027efd007e53d8c Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Sat, 7 Nov 2009 15:29:05 -0500
+Subject: [PATCH] xfree86: Use SA_SIGINFO if available for SIGIO handlers
+
+siginfo_t gives us the file descriptor that raised the signal directly,
+so we don't need to select() for it. This gets evdev event processing
+down to exactly one syscall in the common case.
+
+Signed-off-by: Adam Jackson <ajax at redhat.com>
+---
+ hw/xfree86/os-support/shared/sigio.c | 40 ++++++++++++++++++++++++++++-----
+ 1 files changed, 34 insertions(+), 6 deletions(-)
+
+diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c
+index aed5654..4f1ec55 100644
+--- a/hw/xfree86/os-support/shared/sigio.c
++++ b/hw/xfree86/os-support/shared/sigio.c
+@@ -95,12 +95,11 @@ static int xf86SigIOMax;
+ static int xf86SigIOMaxFd;
+ static fd_set xf86SigIOMask;
+
+-/*
+- * SIGIO gives no way of discovering which fd signalled, select
+- * to discover
+- */
++#ifndef SA_SIGINFO
++
++/* plain signals have no way of discovering which fd signalled. */
+ static void
+-xf86SIGIO (int sig)
++sigio_handler (int sig)
+ {
+ int i;
+ fd_set ready;
+@@ -126,6 +125,27 @@ xf86SIGIO (int sig)
+ errno = save_errno;
+ }
+
++#else /* have SA_SIGINFO */
++
++/* siginfo passes the triggering fd in, no need to select() */
++static void
++sigio_sigaction(int sig, siginfo_t *si, void *ctx)
++{
++ int i;
++ int save_errno = errno;
++
++ for (i = 0; i < MAX_FUNCS; i++) {
++ if (xf86SigIOFuncs[i].f && xf86SigIOFuncs[i].fd == si->si_fd) {
++ (*xf86SigIOFuncs[i].f)(si->si_fd, xf86SigIOFuncs[i].closure);
++ break;
++ }
++ }
++
++ errno = save_errno;
++}
++
++#endif
++
+ static int
+ xf86IsPipe (int fd)
+ {
+@@ -164,6 +184,9 @@ xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
+ xf86Msg(X_WARNING, "fcntl(%d, F_SETOWN): %s\n",
+ fd, strerror(errno));
+ } else {
++#ifdef SA_SIGINFO
++ fcntl(fd, F_SETSIG, SIGIO);
++#endif
+ installed = TRUE;
+ }
+ }
+@@ -184,8 +207,13 @@ xf86InstallSIGIOHandler(int fd, void (*f)(int, void *), void *closure)
+ }
+ sigemptyset(&sa.sa_mask);
+ sigaddset(&sa.sa_mask, SIGIO);
++#ifndef SA_SIGINFO
+ sa.sa_flags = 0;
+- sa.sa_handler = xf86SIGIO;
++ sa.sa_handler = sigio_handler;
++#else
++ sa.sa_flags = SA_SIGINFO;
++ sa.sa_sigaction = sigio_sigaction;
++#endif
+ sigaction(SIGIO, &sa, &osa);
+ xf86SigIOFuncs[i].fd = fd;
+ xf86SigIOFuncs[i].closure = closure;
+--
+1.6.5.rc2
+
More information about the arch-commits
mailing list