Restructure and organize the code.

It was removed and simplified some conditionals. We don't need test for
pDev->isMaster inside xf86CursorSetCursor() because only MD enters there.

In the last chunk, ScreenPriv fields were being assigned without need, so
that code was wrapped inside the conditional to avoid it.

I also tried to make the identation more sane in some parts that I touched.

Signed-off-by: Tiago Vignatti <vignatti@c3sl.ufpr.br>

Minor modification, part of the original patch led to cursors not being
updated properly when controlled through XTest.

Signed-off-by: Peter Hutterer <peter@cs.unisa.edu.au>
This commit is contained in:
Tiago Vignatti 2008-05-14 14:49:09 -03:00 committed by Peter Hutterer
parent 5af90025fe
commit 622d7c1d89

View File

@ -299,43 +299,36 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
xf86CursorScreenPtr ScreenPriv = (xf86CursorScreenPtr)dixLookupPrivate( xf86CursorScreenPtr ScreenPriv = (xf86CursorScreenPtr)dixLookupPrivate(
&pScreen->devPrivates, xf86CursorScreenKey); &pScreen->devPrivates, xf86CursorScreenKey);
xf86CursorInfoPtr infoPtr = ScreenPriv->CursorInfoPtr; xf86CursorInfoPtr infoPtr = ScreenPriv->CursorInfoPtr;
miPointerScreenPtr PointPriv; miPointerScreenPtr PointPriv = (miPointerScreenPtr)dixLookupPrivate(
&pScreen->devPrivates, miPointerScreenKey);
/* only update for VCP, otherwise we get cursor jumps when removing a
sprite. The second cursor is never HW rendered anyway. */
if (pDev == inputInfo.pointer ||
(!pDev->isMaster && pDev->u.master == inputInfo.pointer))
{
ScreenPriv->CurrentCursor = pCurs;
ScreenPriv->x = x;
ScreenPriv->y = y;
ScreenPriv->CursorToRestore = NULL;
}
if (!infoPtr->pScrn->vtSema)
ScreenPriv->SavedCursor = pCurs;
if (pCurs == NullCursor) { /* means we're supposed to remove the cursor */ if (pCurs == NullCursor) { /* means we're supposed to remove the cursor */
if (ScreenPriv->SWCursor) if (ScreenPriv->SWCursor)
(*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor, (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor,
x, y); x, y);
else if else if (ScreenPriv->isUp) {
(ScreenPriv->isUp) {
xf86SetCursor(pScreen, NullCursor, x, y); xf86SetCursor(pScreen, NullCursor, x, y);
ScreenPriv->isUp = FALSE; ScreenPriv->isUp = FALSE;
} }
return; return;
} }
if (pDev == inputInfo.pointer || /* only update for VCP, otherwise we get cursor jumps when removing a
(!pDev->isMaster && pDev->u.master == inputInfo.pointer)) sprite. The second cursor is never HW rendered anyway. */
if (pDev == inputInfo.pointer)
{ {
ScreenPriv->CurrentCursor = pCurs;
ScreenPriv->x = x;
ScreenPriv->y = y;
ScreenPriv->CursorToRestore = NULL;
ScreenPriv->HotX = pCurs->bits->xhot; ScreenPriv->HotX = pCurs->bits->xhot;
ScreenPriv->HotY = pCurs->bits->yhot; ScreenPriv->HotY = pCurs->bits->yhot;
} }
PointPriv = (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates, if (!infoPtr->pScrn->vtSema)
miPointerScreenKey); ScreenPriv->SavedCursor = pCurs;
if (!(ScreenPriv->SWCursor & XF86_FORCE_SW_CURSOR)) if (!(ScreenPriv->SWCursor & XF86_FORCE_SW_CURSOR))
{ {
if (infoPtr->pScrn->vtSema && (ScreenPriv->ForceHWCursorCount || (( if (infoPtr->pScrn->vtSema && (ScreenPriv->ForceHWCursorCount || ((