diff options
author | Gunnar Sletta <gunnar.sletta@jollamobile.com> | 2014-03-14 15:15:26 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-17 15:45:45 +0100 |
commit | 3f362cdf9304afeed06081cd5abfcaf6aaabe19e (patch) | |
tree | 2ce6cee541379fba587f17da3b309060099099a1 /src/quick/scenegraph/qsgrenderloop_p.h | |
parent | d37b770a353079d1e8e34b5f59d4cd132fbd04e2 (diff) |
Fix potential crash during shutdown for QQuickWindows
The cleanup() function would deregister the render loop from all
windows the render loop had seen, but the render loop doesn't see
windows until the window gets a showEvent and for some implementations
it was removed as a result of hideEvent. So add explicit tracking to
QSGRenderLoop which is managed by QQuickWindow's constructor and
destructor. With this, we no longer need the lists from the
subclasses, so these functions are removed again.
Change-Id: I05e5507ad57e23c80bacd99752654cc7d0890dc1
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Diffstat (limited to 'src/quick/scenegraph/qsgrenderloop_p.h')
-rw-r--r-- | src/quick/scenegraph/qsgrenderloop_p.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/quick/scenegraph/qsgrenderloop_p.h b/src/quick/scenegraph/qsgrenderloop_p.h index 47b59992e2..4a22fd60e7 100644 --- a/src/quick/scenegraph/qsgrenderloop_p.h +++ b/src/quick/scenegraph/qsgrenderloop_p.h @@ -44,6 +44,7 @@ #include <QtGui/QImage> #include <private/qtquickglobal_p.h> +#include <QtCore/QSet> QT_BEGIN_NAMESPACE @@ -78,7 +79,9 @@ public: virtual void releaseResources(QQuickWindow *window) = 0; - virtual QList<QQuickWindow *> windows() const = 0; + void addWindow(QQuickWindow *win) { m_windows.insert(win); } + void removeWindow(QQuickWindow *win) { m_windows.remove(win); } + QSet<QQuickWindow *> windows() const { return m_windows; } // ### make this less of a singleton static QSGRenderLoop *instance(); @@ -99,6 +102,8 @@ public Q_SLOTS: private: static QSGRenderLoop *s_instance; + + QSet<QQuickWindow *> m_windows; }; QT_END_NAMESPACE |