diff options
author | kyak | 2017-02-12 15:24:14 +0300 |
---|---|---|
committer | kyak | 2017-02-12 15:24:14 +0300 |
commit | 5a14accdddcf5d4d272dc4fb9e128c8ba0375b71 (patch) | |
tree | 08ce5bf7a899a1a7afd93e5b2e1e8385fe2f4c72 | |
parent | c057034754d72b2da435f46fc104c91348c0a86a (diff) | |
download | aur-5a14accdddcf5d4d272dc4fb9e128c8ba0375b71.tar.gz |
upgpkg: xorg-server 1.19.1-2
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | PKGBUILD | 8 | ||||
-rw-r--r-- | bug99358.patch | 162 |
3 files changed, 173 insertions, 3 deletions
@@ -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 @@ -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 + |