summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/corelib/animation/qabstractanimation.cpp8
-rw-r--r--src/corelib/animation/qabstractanimation.h2
-rw-r--r--src/corelib/animation/qabstractanimation_p.h1
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