mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-02-06 03:30:27 +01:00
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
(cherry picked from commit 7198a6d4e7)
This commit is contained in:
parent
ad2facda30
commit
da85ab9dd8
1 changed files with 18 additions and 6 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue