diff options
Diffstat (limited to 'src/corelib/animation')
-rw-r--r-- | src/corelib/animation/qabstractanimation.cpp | 8 | ||||
-rw-r--r-- | src/corelib/animation/qabstractanimation.h | 2 | ||||
-rw-r--r-- | src/corelib/animation/qabstractanimation_p.h | 1 |
3 files changed, 9 insertions, 2 deletions
diff --git a/src/corelib/animation/qabstractanimation.cpp b/src/corelib/animation/qabstractanimation.cpp index 30f071498e..04df52c6f0 100644 --- a/src/corelib/animation/qabstractanimation.cpp +++ b/src/corelib/animation/qabstractanimation.cpp @@ -248,6 +248,12 @@ QUnifiedTimer *QUnifiedTimer::instance() return instance(true); } +void QUnifiedTimer::maybeUpdateAnimationsToCurrentTime() +{ + if (time.elapsed() - lastTick > 50) + updateAnimationTimers(driver->elapsed()); +} + void QUnifiedTimer::updateAnimationTimers(qint64 currentTick) { //setCurrentTime can get this called again while we're the for loop. At least with pauseAnimations @@ -590,7 +596,7 @@ void QAnimationTimer::startAnimations() startAnimationPending = false; //force timer to update, which prevents large deltas for our newly added animations if (!animations.isEmpty()) - QUnifiedTimer::instance()->updateAnimationTimers(-1); + QUnifiedTimer::instance()->maybeUpdateAnimationsToCurrentTime(); //we transfer the waiting animations into the "really running" state animations += animationsToStart; diff --git a/src/corelib/animation/qabstractanimation.h b/src/corelib/animation/qabstractanimation.h index 70200c4064..34ddbc606f 100644 --- a/src/corelib/animation/qabstractanimation.h +++ b/src/corelib/animation/qabstractanimation.h @@ -149,7 +149,7 @@ public: bool isRunning() const; - qint64 elapsed() const; + virtual qint64 elapsed() const; Q_SIGNALS: void started(); diff --git a/src/corelib/animation/qabstractanimation_p.h b/src/corelib/animation/qabstractanimation_p.h index c4d53342c2..02a3c02ddc 100644 --- a/src/corelib/animation/qabstractanimation_p.h +++ b/src/corelib/animation/qabstractanimation_p.h @@ -185,6 +185,7 @@ public: bool canUninstallAnimationDriver(QAnimationDriver *driver); void restart(); + void maybeUpdateAnimationsToCurrentTime(); void updateAnimationTimers(qint64 currentTick); //useful for profiling/debugging |