diff options
Diffstat (limited to 'xorg-server-hwcursor-gamma/bug99358.patch')
-rw-r--r-- | xorg-server-hwcursor-gamma/bug99358.patch | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/xorg-server-hwcursor-gamma/bug99358.patch b/xorg-server-hwcursor-gamma/bug99358.patch deleted file mode 100644 index 7feb762..0000000 --- a/xorg-server-hwcursor-gamma/bug99358.patch +++ /dev/null @@ -1,162 +0,0 @@ -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 - |