aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util/qquickanimation.cpp
diff options
context:
space:
mode:
authorCharles Yin <charles.yin@nokia.com>2012-05-28 16:09:26 +1000
committerQt by Nokia <qt-info@nokia.com>2012-05-29 05:57:48 +0200
commitc187ebb93167e69e9e157cb236ef16e39e1b2fb9 (patch)
tree13f25dddf8f5132a6b30d331f486ea99c3362000 /src/quick/util/qquickanimation.cpp
parent0eec47c65982f586a8602af964b454494f0f49f3 (diff)
Don't use deleted QQuickPathAnimationAnimator
1) If QQuickPathAnimationAnimator was deleted, just return 0 for transition 2) Add Null checking for all animation::transition() calls Change-Id: I1248d08fe05da5c9ff58f7b812ff11545959032f Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
Diffstat (limited to 'src/quick/util/qquickanimation.cpp')
-rw-r--r--src/quick/util/qquickanimation.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/quick/util/qquickanimation.cpp b/src/quick/util/qquickanimation.cpp
index c04018c794..bc39355a48 100644
--- a/src/quick/util/qquickanimation.cpp
+++ b/src/quick/util/qquickanimation.cpp
@@ -164,15 +164,17 @@ void QQuickAbstractAnimationPrivate::commence()
QAbstractAnimationJob *oldInstance = animationInstance;
animationInstance = q->transition(actions, properties, QQuickAbstractAnimation::Forward);
- if (oldInstance != animationInstance) {
- animationInstance->addAnimationChangeListener(this, QAbstractAnimationJob::Completion);
- if (oldInstance)
- delete oldInstance;
- }
- animationInstance->start();
- if (animationInstance->isStopped()) {
- running = false;
- emit q->completed();
+ if (oldInstance && oldInstance != animationInstance)
+ delete oldInstance;
+
+ if (animationInstance) {
+ if (oldInstance != animationInstance)
+ animationInstance->addAnimationChangeListener(this, QAbstractAnimationJob::Completion);
+ animationInstance->start();
+ if (animationInstance->isStopped()) {
+ running = false;
+ emit q->completed();
+ }
}
}
@@ -1693,7 +1695,8 @@ QAbstractAnimationJob* QQuickSequentialAnimation::transition(QQuickStateActions
if (valid)
d->animations.at(ii)->setDefaultTarget(d->defaultProperty);
anim = d->animations.at(ii)->transition(actions, modified, direction, defaultTarget);
- inc == -1 ? ag->prependAnimation(anim) : ag->appendAnimation(anim);
+ if (anim)
+ inc == -1 ? ag->prependAnimation(anim) : ag->appendAnimation(anim);
}
return initInstance(ag);
@@ -1752,7 +1755,8 @@ QAbstractAnimationJob* QQuickParallelAnimation::transition(QQuickStateActions &a
if (valid)
d->animations.at(ii)->setDefaultTarget(d->defaultProperty);
anim = d->animations.at(ii)->transition(actions, modified, direction, defaultTarget);
- ag->appendAnimation(anim);
+ if (anim)
+ ag->appendAnimation(anim);
}
return initInstance(ag);
}