summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar@sletta.org>2014-09-11 14:36:53 +0200
committerGunnar Sletta <gunnar@sletta.org>2014-09-11 15:25:21 +0200
commit0db3ea4048fe572a256deb343ea5e64a55d98de9 (patch)
treeda96773b6a3f5c2b7db2e242ea4973dabceff578
parentf40b4cd89cf4ddc6f61cb104a84292eae9022931 (diff)
Use a dedicated timer for the animation driver.
QUnifiedTimer::elapsed() was implemented using driverStartTime + time.elapsed() while the driver was running, but time.elapsed already contains driverStartTime so that was counted twice. This caused repeating timers to fire immediately once they first had fired, if the animation driver was started while it was running. Separate the two timers. Animation driver time restarts from 0 every time it starts. Change-Id: Icf5cd0381b121b2355d7c6ec3edd0997721cbcdf Task-number: QTBUG-41198 Reviewed-by: Michael Brasser <michael.brasser@live.com>
-rw-r--r--src/corelib/animation/qabstractanimation.cpp6
-rw-r--r--src/corelib/animation/qabstractanimation_p.h1
2 files changed, 4 insertions, 3 deletions
diff --git a/src/corelib/animation/qabstractanimation.cpp b/src/corelib/animation/qabstractanimation.cpp
index 28a09ee2e4..4e9ee5c3f9 100644
--- a/src/corelib/animation/qabstractanimation.cpp
+++ b/src/corelib/animation/qabstractanimation.cpp
@@ -877,6 +877,7 @@ void QAnimationDriver::start()
Q_D(QAnimationDriver);
if (!d->running) {
d->running = true;
+ d->timer.start();
emit started();
}
}
@@ -900,9 +901,8 @@ void QAnimationDriver::stop()
qint64 QAnimationDriver::elapsed() const
{
- // The default implementation picks up the elapsed time from the
- // unified timer and can ignore the time offset.
- return QUnifiedTimer::instance()->time.elapsed();
+ Q_D(const QAnimationDriver);
+ return d->running ? d->timer.elapsed() : 0;
}
/*!
diff --git a/src/corelib/animation/qabstractanimation_p.h b/src/corelib/animation/qabstractanimation_p.h
index 6e71356c4c..2b36a678bc 100644
--- a/src/corelib/animation/qabstractanimation_p.h
+++ b/src/corelib/animation/qabstractanimation_p.h
@@ -133,6 +133,7 @@ class Q_CORE_EXPORT QAnimationDriverPrivate : public QObjectPrivate
{
public:
QAnimationDriverPrivate() : running(false) {}
+ QElapsedTimer timer;
bool running;
};