aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util/qquickbehavior.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/qquickbehavior.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/qquickbehavior.cpp')
-rw-r--r--src/quick/util/qquickbehavior.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/quick/util/qquickbehavior.cpp b/src/quick/util/qquickbehavior.cpp
index d201dfad66..1623a00a49 100644
--- a/src/quick/util/qquickbehavior.cpp
+++ b/src/quick/util/qquickbehavior.cpp
@@ -204,13 +204,15 @@ void QQuickBehavior::write(const QVariant &value)
QList<QQmlProperty> after;
QAbstractAnimationJob *prev = d->animationInstance;
d->animationInstance = d->animation->transition(actions, after, QQuickAbstractAnimation::Forward);
- if (d->animationInstance != prev) {
- d->animationInstance->addAnimationChangeListener(d, QAbstractAnimationJob::StateChange);
- if (prev)
- delete prev;
+ if (prev && prev != d->animationInstance)
+ delete prev;
+
+ if (d->animationInstance) {
+ if (d->animationInstance != prev)
+ d->animationInstance->addAnimationChangeListener(d, QAbstractAnimationJob::StateChange);
+ d->animationInstance->start();
+ d->blockRunningChanged = false;
}
- d->animationInstance->start();
- d->blockRunningChanged = false;
if (!after.contains(d->property))
QQmlPropertyPrivate::write(d->property, value, QQmlPropertyPrivate::BypassInterceptor | QQmlPropertyPrivate::DontRemoveBinding);
}