On Thu, Jun 03, 2010 at 07:00:53PM -0700, Alan Coopersmith wrote: > Signed-off-by: Alan Coopersmith <[email protected]> > --- > hw/xfree86/ramdac/xf86Cursor.c | 12 ++++-------- > mi/mipointer.c | 16 ++++++++++++++++ > mi/mipointer.h | 5 +++++ > 3 files changed, 25 insertions(+), 8 deletions(-) > > diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c > index 2bbcb9c..aaaad79 100644 > --- a/hw/xfree86/ramdac/xf86Cursor.c > +++ b/hw/xfree86/ramdac/xf86Cursor.c > @@ -243,8 +243,6 @@ xf86CursorSwitchMode(int index, DisplayModePtr mode, int > flags) > ScreenPtr pScreen = screenInfo.screens[index]; > xf86CursorScreenPtr ScreenPriv = (xf86CursorScreenPtr)dixLookupPrivate( > &pScreen->devPrivates, xf86CursorScreenKey); > - miPointerScreenPtr PointPriv = (miPointerScreenPtr)dixLookupPrivate( > - &pScreen->devPrivates, miPointerScreenKey); > > if (ScreenPriv->isUp) { > xf86SetCursor(pScreen, NullCursor, ScreenPriv->x, ScreenPriv->y); > @@ -259,7 +257,7 @@ xf86CursorSwitchMode(int index, DisplayModePtr mode, int > flags) > * ensure the cursor is repainted by miPointerWarpCursor(). > */ > ScreenPriv->CursorToRestore = ScreenPriv->CurrentCursor; > - PointPriv->waitForUpdate = FALSE; /* Force cursor repaint */ > + miPointerSetWaitForUpdate(pScreen, FALSE); /* Force cursor repaint > */ > > return ret; > } > @@ -300,9 +298,6 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, > CursorPtr pCurs, > xf86CursorScreenPtr ScreenPriv = (xf86CursorScreenPtr)dixLookupPrivate( > &pScreen->devPrivates, xf86CursorScreenKey); > xf86CursorInfoPtr infoPtr = ScreenPriv->CursorInfoPtr; > - miPointerScreenPtr PointPriv = (miPointerScreenPtr)dixLookupPrivate( > - &pScreen->devPrivates, miPointerScreenKey); > - > > if (pCurs == NullCursor) { /* means we're supposed to remove the > cursor */ > if (ScreenPriv->SWCursor || > @@ -353,11 +348,12 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr > pScreen, CursorPtr pCurs, > xf86SetCursor(pScreen, pCurs, x, y); > ScreenPriv->SWCursor = FALSE; > ScreenPriv->isUp = TRUE; > - PointPriv->waitForUpdate = !infoPtr->pScrn->silkenMouse; > + > + miPointerSetWaitForUpdate(pScreen, !infoPtr->pScrn->silkenMouse); > return; > } > > - PointPriv->waitForUpdate = TRUE; > + miPointerSetWaitForUpdate(pScreen, TRUE); > > if (ScreenPriv->isUp) { > /* Remove the HW cursor, or make it transparent */ > diff --git a/mi/mipointer.c b/mi/mipointer.c > index 296c57f..e5f810e 100644 > --- a/mi/mipointer.c > +++ b/mi/mipointer.c > @@ -448,6 +448,22 @@ miPointerGetScreen(DeviceIntPtr pDev) > return (pPointer) ? pPointer->pScreen : NULL; > } > > +/* Controls whether the cursor image should be updated immediately when > + moved (FALSE) or if something else will be responsible for updating > + it later (TRUE). Returns current setting. > + Caller is responsible for calling OsBlockSignal first. > +*/ > +Bool > +miPointerSetWaitForUpdate(ScreenPtr pScreen, Bool wait) > +{ > + SetupScreen(pScreen); > + Bool prevWait = pScreenPriv->waitForUpdate; > + > + pScreenPriv->waitForUpdate = wait; > + return prevWait; > +} > + > + > /* Move the pointer on the current screen, and update the sprite. */ > static void > miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, > diff --git a/mi/mipointer.h b/mi/mipointer.h > index 22575ea..76f2ef0 100644 > --- a/mi/mipointer.h > +++ b/mi/mipointer.h > @@ -139,6 +139,11 @@ extern _X_EXPORT void miPointerSetPosition( > extern _X_EXPORT void miPointerUpdateSprite( > DeviceIntPtr pDev); > > +/* Sets whether the sprite should be updated immediately on pointer moves */ > +extern _X_EXPORT Bool miPointerSetWaitForUpdate( > + ScreenPtr pScreen, > + Bool wait); > + > extern _X_EXPORT DevPrivateKey miPointerScreenKey; > > #endif /* MIPOINTER_H */ > -- > 1.5.6.5
Reviewed-by: Peter Hutterer <[email protected]> for both. I've pulled them in, will send them to keith. Cheers, Peter _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
