aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/qsgrenderloop.cpp
diff options
context:
space:
mode:
authorSérgio Martins <sergio.martins@kdab.com>2014-07-03 13:44:41 +0100
committerSérgio Martins <sergio.martins@kdab.com>2014-07-03 21:10:08 +0200
commit8e866366e5ef3f77d19a0b9f8ca93dafd15e1e6a (patch)
treea0f05341fb66f87b600adeeb7f5d537f054889ec /src/quick/scenegraph/qsgrenderloop.cpp
parent2728460e62f8d4a5f7c3b884562aea9a526f9bb3 (diff)
Don't dereference null QQuickWindowPrivate.
windowDestroyed() triggers a sendPostedEvent(DeferredDelete) to cleanup GL resources. If the window was deleted through deleteLater() it will also be deleted at this point. Change-Id: I3b0cc0f36c4a543c5fbaa4af107dc4aa0c8b6725 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/quick/scenegraph/qsgrenderloop.cpp')
-rw-r--r--src/quick/scenegraph/qsgrenderloop.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/quick/scenegraph/qsgrenderloop.cpp b/src/quick/scenegraph/qsgrenderloop.cpp
index e76aa1bbb5..05302cfe33 100644
--- a/src/quick/scenegraph/qsgrenderloop.cpp
+++ b/src/quick/scenegraph/qsgrenderloop.cpp
@@ -94,8 +94,12 @@ void QSGRenderLoop::cleanup()
foreach (QQuickWindow *w, s_instance->windows()) {
QQuickWindowPrivate *wd = QQuickWindowPrivate::get(w);
if (wd->windowManager == s_instance) {
+ // windowDestroyed() triggers a sendPostedEvent(DeferredDelete),
+ // so wd will be null if the window was deleteLater()'ed
+ bool wasDeleted = wd->wasDeleted;
s_instance->windowDestroyed(w);
- wd->windowManager = 0;
+ if (!wasDeleted)
+ wd->windowManager = 0;
}
}
delete s_instance;