diff options
author | Sérgio Martins <sergio.martins@kdab.com> | 2014-07-03 13:44:41 +0100 |
---|---|---|
committer | Sérgio Martins <sergio.martins@kdab.com> | 2014-07-03 21:10:08 +0200 |
commit | 8e866366e5ef3f77d19a0b9f8ca93dafd15e1e6a (patch) | |
tree | a0f05341fb66f87b600adeeb7f5d537f054889ec /src/quick/scenegraph/qsgrenderloop.cpp | |
parent | 2728460e62f8d4a5f7c3b884562aea9a526f9bb3 (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.cpp | 6 |
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; |