summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorkyak2017-02-12 15:24:14 +0300
committerkyak2017-02-12 15:24:14 +0300
commit5a14accdddcf5d4d272dc4fb9e128c8ba0375b71 (patch)
tree08ce5bf7a899a1a7afd93e5b2e1e8385fe2f4c72
parentc057034754d72b2da435f46fc104c91348c0a86a (diff)
downloadaur-5a14accdddcf5d4d272dc4fb9e128c8ba0375b71.tar.gz
upgpkg: xorg-server 1.19.1-2
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD8
-rw-r--r--bug99358.patch162
3 files changed, 173 insertions, 3 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 443e64de8dd0..931ee1213e4b 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,8 +1,8 @@
# Generated by mksrcinfo v8
-# Thu Jan 12 16:05:31 UTC 2017
+# Sun Feb 12 12:23:38 UTC 2017
pkgbase = xorg-server-bug865
pkgver = 1.19.1
- pkgrel = 1
+ pkgrel = 2
url = http://xorg.freedesktop.org
arch = i686
arch = x86_64
@@ -59,11 +59,13 @@ pkgbase = xorg-server-bug865
makedepends = wayland-protocols
source = https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.19.1.tar.bz2
source = https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-1.19.1.tar.bz2.sig
+ source = bug99358.patch
source = xvfb-run
source = xvfb-run.1
source = freedesktop-bug-865.patch
sha256sums = 79ae2cf39d3f6c4a91201d8dad549d1d774b3420073c5a70d390040aa965a7fb
sha256sums = SKIP
+ sha256sums = f46a9d1a5ac43c5359fbd8c57b6e64b0bd313116b5cb638527bfe3701e6c3904
sha256sums = ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9
sha256sums = 2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776
sha256sums = dcd7ace95b29beab7b5f4f3f31a69f4f3c46d88d6b623243c7817b162f2fcdcb
diff --git a/PKGBUILD b/PKGBUILD
index 011d428d3213..e4c910792261 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@
pkgbase=xorg-server-bug865
pkgname=xorg-server-bug865
pkgver=1.19.1
-pkgrel=1
+pkgrel=2
arch=('i686' 'x86_64')
license=('custom')
groups=('xorg')
@@ -18,6 +18,7 @@ makedepends=('pixman' 'libx11' 'mesa' 'mesa-libgl' 'xf86driproto' 'xcmiscproto'
'xcb-util' 'xcb-util-image' 'xcb-util-renderutil' 'xcb-util-wm' 'xcb-util-keysyms' 'dri3proto'
'libxshmfence' 'libunwind' 'systemd' 'wayland-protocols')
source=(https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-${pkgver}.tar.bz2{,.sig}
+ bug99358.patch
xvfb-run
xvfb-run.1
freedesktop-bug-865.patch)
@@ -26,6 +27,7 @@ validpgpkeys=('7B27A3F1A6E18CD9588B4AE8310180050905E40C'
'DD38563A8A8224537D1F90E45B8A2D50A0ECD0D3')
sha256sums=('79ae2cf39d3f6c4a91201d8dad549d1d774b3420073c5a70d390040aa965a7fb'
'SKIP'
+ 'f46a9d1a5ac43c5359fbd8c57b6e64b0bd313116b5cb638527bfe3701e6c3904'
'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9'
'2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776'
'dcd7ace95b29beab7b5f4f3f31a69f4f3c46d88d6b623243c7817b162f2fcdcb')
@@ -33,6 +35,10 @@ sha256sums=('79ae2cf39d3f6c4a91201d8dad549d1d774b3420073c5a70d390040aa965a7fb'
prepare() {
cd "xorg-server-${pkgver}"
+ # https://bugs.freedesktop.org/show_bug.cgi?id=99358
+ # https://bugs.archlinux.org/task/52808
+ patch -Np1 -i ../bug99358.patch
+
# The patch for freedesktop bug 865
patch -Np1 -i "${srcdir}/freedesktop-bug-865.patch"
diff --git a/bug99358.patch b/bug99358.patch
new file mode 100644
index 000000000000..7feb762ba1bd
--- /dev/null
+++ b/bug99358.patch
@@ -0,0 +1,162 @@
+From 7198a6d4e74f684cb383b3e0f70dd2bae405e6e7 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon, 16 Jan 2017 22:17:36 +0000
+Subject: xfree86: Take the input lock for xf86RecolorCursor
+
+xf86RecolorCursor() may be called directly from XRecolorCursor as well
+as from xf86ScreenSetCursor(). In the latter case, the input lock is
+already held, but not for the former and so we need to add a wrapper
+function that acquires the input lock before performing
+xf86RecolorCursor()
+
+References: https://bugs.freedesktop.org/show_bug.cgi?id=99358
+
+diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c
+index 4481320..55d5861 100644
+--- a/hw/xfree86/ramdac/xf86HWCurs.c
++++ b/hw/xfree86/ramdac/xf86HWCurs.c
+@@ -22,6 +22,9 @@
+
+ #include "servermd.h"
+
++static void
++xf86RecolorCursor_locked(xf86CursorScreenPtr ScreenPriv, CursorPtr pCurs);
++
+ static CARD32
+ xf86ReverseBitOrder(CARD32 v)
+ {
+@@ -204,7 +207,7 @@ xf86ScreenSetCursor(ScreenPtr pScreen, CursorPtr pCurs, int x, int y)
+ if (!xf86DriverLoadCursorImage (infoPtr, bits))
+ return FALSE;
+
+- xf86RecolorCursor(pScreen, pCurs, 1);
++ xf86RecolorCursor_locked (ScreenPriv, pCurs);
+
+ (*infoPtr->SetCursorPosition) (infoPtr->pScrn, x, y);
+
+@@ -312,12 +315,9 @@ xf86MoveCursor(ScreenPtr pScreen, int x, int y)
+ input_unlock();
+ }
+
+-void
+-xf86RecolorCursor(ScreenPtr pScreen, CursorPtr pCurs, Bool displayed)
++static void
++xf86RecolorCursor_locked(xf86CursorScreenPtr ScreenPriv, CursorPtr pCurs)
+ {
+- xf86CursorScreenPtr ScreenPriv =
+- (xf86CursorScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
+- xf86CursorScreenKey);
+ xf86CursorInfoPtr infoPtr = ScreenPriv->CursorInfoPtr;
+
+ /* recoloring isn't applicable to ARGB cursors and drivers
+@@ -357,6 +357,18 @@ xf86RecolorCursor(ScreenPtr pScreen, CursorPtr pCurs, Bool displayed)
+ }
+ }
+
++void
++xf86RecolorCursor(ScreenPtr pScreen, CursorPtr pCurs, Bool displayed)
++{
++ xf86CursorScreenPtr ScreenPriv =
++ (xf86CursorScreenPtr) dixLookupPrivate(&pScreen->devPrivates,
++ xf86CursorScreenKey);
++
++ input_lock();
++ xf86RecolorCursor_locked (ScreenPriv, pCurs);
++ input_unlock();
++}
++
+ /* These functions assume that MaxWidth is a multiple of 32 */
+ static unsigned char *
+ RealizeCursorInterleave0(xf86CursorInfoPtr infoPtr, CursorPtr pCurs)
+--
+cgit v0.10.2
+
+From cfddd919cce4178baba07959e5e862d02e166522 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Mon, 16 Jan 2017 22:36:34 +0000
+Subject: xfree86: Take input lock for xf86TransparentCursor
+
+
+diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c
+index 55d5861..26dc7e5 100644
+--- a/hw/xfree86/ramdac/xf86HWCurs.c
++++ b/hw/xfree86/ramdac/xf86HWCurs.c
+@@ -261,6 +261,8 @@ xf86SetTransparentCursor(ScreenPtr pScreen)
+ xf86CursorScreenKey);
+ xf86CursorInfoPtr infoPtr = ScreenPriv->CursorInfoPtr;
+
++ input_lock();
++
+ if (!ScreenPriv->transparentData)
+ ScreenPriv->transparentData =
+ (*infoPtr->RealizeCursor) (infoPtr, NullCursor);
+@@ -273,6 +275,8 @@ xf86SetTransparentCursor(ScreenPtr pScreen)
+ ScreenPriv->transparentData);
+
+ (*infoPtr->ShowCursor) (infoPtr->pScrn);
++
++ input_unlock();
+ }
+
+ static void
+--
+cgit v0.10.2
+
+From 3eb964e25243056dd998f52d3b00171b71c89189 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Fri, 20 Jan 2017 09:49:19 +0000
+Subject: xfree86: Take input_lock() for xf86ScreenCheckHWCursor
+
+
+diff --git a/hw/xfree86/ramdac/xf86HWCurs.c b/hw/xfree86/ramdac/xf86HWCurs.c
+index 26dc7e5..7043a9c 100644
+--- a/hw/xfree86/ramdac/xf86HWCurs.c
++++ b/hw/xfree86/ramdac/xf86HWCurs.c
+@@ -139,9 +139,14 @@ Bool
+ xf86CheckHWCursor(ScreenPtr pScreen, CursorPtr cursor, xf86CursorInfoPtr infoPtr)
+ {
+ ScreenPtr pSlave;
++ Bool use_hw_cursor = TRUE;
+
+- if (!xf86ScreenCheckHWCursor(pScreen, cursor, infoPtr))
+- return FALSE;
++ input_lock();
++
++ if (!xf86ScreenCheckHWCursor(pScreen, cursor, infoPtr)) {
++ use_hw_cursor = FALSE;
++ goto unlock;
++ }
+
+ /* ask each driver consuming a pixmap if it can support HW cursor */
+ xorg_list_for_each_entry(pSlave, &pScreen->slave_list, slave_head) {
+@@ -151,14 +156,22 @@ xf86CheckHWCursor(ScreenPtr pScreen, CursorPtr cursor, xf86CursorInfoPtr infoPtr
+ continue;
+
+ sPriv = dixLookupPrivate(&pSlave->devPrivates, xf86CursorScreenKey);
+- if (!sPriv) /* NULL if Option "SWCursor", possibly other conditions */
+- return FALSE;
++ if (!sPriv) { /* NULL if Option "SWCursor", possibly other conditions */
++ use_hw_cursor = FALSE;
++ break;
++ }
+
+ /* FALSE if HWCursor not supported by slave */
+- if (!xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr))
+- return FALSE;
++ if (!xf86ScreenCheckHWCursor(pSlave, cursor, sPriv->CursorInfoPtr)) {
++ use_hw_cursor = FALSE;
++ break;
++ }
+ }
+- return TRUE;
++
++unlock:
++ input_unlock();
++
++ return use_hw_cursor;
+ }
+
+ static Bool
+--
+cgit v0.10.2
+