Prevent QUnifiedTimer from ticking backwards.

This could happen in the following situation:
* a custom animation driver with fixed delta
* a triple-buffering scheme (rendering ahead a frame)
* a second animation timer starting while a first was active

This would cause QUnifiedTimer::startTimers() to trigger
QUnifiedTimer::updateAnimationTimers(-1), and use the current time from
the QElapsedTimer rather than the animation driver. This time could be
less than the last reported time from the animation driver.

Change-Id: Ibf1796fcb99f288d4946b30e5e7225695aa61781
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
bb10
Michael Brasser 2014-04-06 20:00:07 -05:00 committed by The Qt Project
parent f41418aeb2
commit 5fe98ebb37
1 changed files with 6 additions and 4 deletions

View File

@ -277,10 +277,12 @@ void QUnifiedTimer::updateAnimationTimers(qint64 currentTick)
lastTick = totalElapsed;
//we make sure we only call update time if the time has actually changed
//it might happen in some cases that the time doesn't change because events are delayed
//when the CPU load is high
if (delta) {
//we make sure we only call update time if the time has actually advanced
//* it might happen in some cases that the time doesn't change because events are delayed
// when the CPU load is high
//* it might happen in some cases that the delta is negative because the animation driver
// advances faster than time.elapsed()
if (delta > 0) {
insideTick = true;
if (profilerCallback)
profilerCallback(delta);