aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/animations
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@jollamobile.com>2014-04-22 16:24:06 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-24 13:46:52 +0200
commitbe49c10b77ff997a7f1395d9e4e80eab02a2b387 (patch)
tree381c8ad090a0d45ab4584ae131112dd5f22b2555 /src/qml/animations
parent2d8cde43e8ead44fb8bae7078741ca2fe6266733 (diff)
Reset loop counters when animations are started.
Where normal animations would derive the current loop from the current time, uncontrolled animations use an iterative approach and which was not reset when an animation was restarted or a parent had a loop around it. Change-Id: Ia7a1880c8b7578463dff4c5ddeab48324bcb32ee Reviewed-by: Michael Brasser <michael.brasser@live.com>
Diffstat (limited to 'src/qml/animations')
-rw-r--r--src/qml/animations/qabstractanimationjob.cpp1
-rw-r--r--src/qml/animations/qparallelanimationgroupjob.cpp4
2 files changed, 4 insertions, 1 deletions
diff --git a/src/qml/animations/qabstractanimationjob.cpp b/src/qml/animations/qabstractanimationjob.cpp
index 0928c0efc1..991b1fad5c 100644
--- a/src/qml/animations/qabstractanimationjob.cpp
+++ b/src/qml/animations/qabstractanimationjob.cpp
@@ -380,6 +380,7 @@ void QAbstractAnimationJob::setState(QAbstractAnimationJob::State newState)
{
// this ensures that the value is updated now that the animation is running
if (oldState == Stopped) {
+ m_currentLoop = 0;
if (isTopLevel) {
// currentTime needs to be updated if pauseTimer is active
RETURN_IF_DELETED(QQmlAnimationTimer::ensureTimerUpdate());
diff --git a/src/qml/animations/qparallelanimationgroupjob.cpp b/src/qml/animations/qparallelanimationgroupjob.cpp
index f66d4b1826..f3ea389469 100644
--- a/src/qml/animations/qparallelanimationgroupjob.cpp
+++ b/src/qml/animations/qparallelanimationgroupjob.cpp
@@ -142,8 +142,10 @@ void QParallelAnimationGroupJob::updateState(QAbstractAnimationJob::State newSta
break;
case Running:
for (QAbstractAnimationJob *animation = firstChild(); animation; animation = animation->nextSibling()) {
- if (oldState == Stopped)
+ if (oldState == Stopped) {
animation->stop();
+ m_previousLoop = m_direction == Forward ? 0 : m_loopCount - 1;
+ }
resetUncontrolledAnimationFinishTime(animation);
animation->setDirection(m_direction);
if (shouldAnimationStart(animation, oldState == Stopped))