From: Pauli Nieminen <[email protected]> In animate cursor block handler code assumes GetTimeInMillis returns always nonzero value. This isn't true when time wraps around.
To prevent any problems in case GetTimeInMillis would return zero use activeDevice variable to track if we have received time. Signed-off-by: Pauli Nieminen <[email protected]> --- render/animcur.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/render/animcur.c b/render/animcur.c index 2160f50..1a8ca43 100644 --- a/render/animcur.c +++ b/render/animcur.c @@ -150,6 +150,7 @@ AnimCurScreenBlockHandler (int screenNum, ScreenPtr pScreen = screenInfo.screens[screenNum]; AnimCurScreenPtr as = GetAnimCurScreen(pScreen); DeviceIntPtr dev; + Bool activeDevice = FALSE; CARD32 now = 0, soonest = ~0; /* earliest time to wakeup again */ @@ -157,7 +158,10 @@ AnimCurScreenBlockHandler (int screenNum, { if (IsPointerDevice(dev) && pScreen == dev->spriteInfo->anim.pScreen) { - if (!now) now = GetTimeInMillis (); + if (!activeDevice) { + now = GetTimeInMillis (); + activeDevice = TRUE; + } if ((INT32) (now - dev->spriteInfo->anim.time) >= 0) { @@ -187,7 +191,7 @@ AnimCurScreenBlockHandler (int screenNum, } } - if (now) + if (activeDevice) AdjustWaitForDelay (pTimeout, soonest - now); Unwrap (as, pScreen, BlockHandler); -- 1.7.0.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
