mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-04-02 15:40:36 +02:00
render: Don't filter 0 return from GetTimeInMillis
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 <ext-pauli.nieminen@nokia.com>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
(cherry picked from commit aa8cea953d)
This commit is contained in:
parent
aec278eb65
commit
a87a5b7e83
1 changed files with 6 additions and 2 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue