aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2017-10-17 13:04:47 +0200
committerUlf Hermann <ulf.hermann@qt.io>2017-10-24 09:00:52 +0000
commitec00272f749972c49d4eaf858a57c38a5bf30c8b (patch)
tree3cf0806e56c7ca994332e17d81913d8487bd779d /src
parentdadaa47844f36ba2e598a1d44cfff0cb16384510 (diff)
QQuickAnimatorProxyJob: Disconnect from window when unsetting it
Otherwise we may get called back when the window's scene graph is ready, but we don't have a controller anymore then. This leads to a crash. Change-Id: I8075619e1fd3c69ca0f7d0b1d72952b8cc5040f8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/quick/util/qquickanimatorjob.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/quick/util/qquickanimatorjob.cpp b/src/quick/util/qquickanimatorjob.cpp
index 3ac02cd259..50fb7090d1 100644
--- a/src/quick/util/qquickanimatorjob.cpp
+++ b/src/quick/util/qquickanimatorjob.cpp
@@ -197,8 +197,12 @@ void QQuickAnimatorProxyJob::windowChanged(QQuickWindow *window)
void QQuickAnimatorProxyJob::setWindow(QQuickWindow *window)
{
if (!window) {
- if (m_job && m_controller)
+ if (m_job && m_controller) {
+ disconnect(m_controller->window(), &QQuickWindow::sceneGraphInitialized,
+ this, &QQuickAnimatorProxyJob::sceneGraphInitialized);
m_controller->cancel(m_job);
+ }
+
m_controller = nullptr;
stop();