diff options
author | Bea Lam <bea.lam@nokia.com> | 2012-03-08 17:05:07 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-09 11:03:23 +0100 |
commit | 4eab1984cebe9972283e88e7b91f763636e17c47 (patch) | |
tree | 0aad8dcdd7d576d8eba9726c62429097489a9dbc /src/quick/items/qquickitemviewtransition.cpp | |
parent | 576fb7a8c9e15052f8662e3fcbe03a87c8316939 (diff) |
Reset transitioner pointer when transition job finishes
A transition job should only keep a reference to the transitioner
for the lifetime of the transition.
Change-Id: I22564d7b6587fed58ef53fd50ad4a700340dc7a4
Reviewed-by: Martin Jones
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/quick/items/qquickitemviewtransition.cpp')
-rw-r--r-- | src/quick/items/qquickitemviewtransition.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/quick/items/qquickitemviewtransition.cpp b/src/quick/items/qquickitemviewtransition.cpp index 5669ef927e..2134c8eca8 100644 --- a/src/quick/items/qquickitemviewtransition.cpp +++ b/src/quick/items/qquickitemviewtransition.cpp @@ -62,6 +62,7 @@ public: QPointF m_toPos; QQuickItemViewTransitioner::TransitionType m_type; bool m_isTarget; + bool *m_wasDeleted; protected: virtual void finished(); @@ -73,11 +74,14 @@ QQuickItemViewTransitionJob::QQuickItemViewTransitionJob() , m_item(0) , m_type(QQuickItemViewTransitioner::NoTransition) , m_isTarget(false) + , m_wasDeleted(0) { } QQuickItemViewTransitionJob::~QQuickItemViewTransitionJob() { + if (m_wasDeleted) + *m_wasDeleted = true; if (m_transitioner) m_transitioner->runningJobs.remove(this); } @@ -134,8 +138,16 @@ void QQuickItemViewTransitionJob::finished() { QQuickTransitionManager::finished(); - if (m_transitioner) + if (m_transitioner) { + bool deleted = false; + m_wasDeleted = &deleted; m_transitioner->finishedTransition(this, m_item); + if (deleted) + return; + m_wasDeleted = 0; + + m_transitioner = 0; + } m_item = 0; m_toPos.setX(0); |