diff options
author | Gunnar Sletta <gunnar.sletta@nokia.com> | 2012-02-21 07:23:42 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-21 09:01:10 +0100 |
commit | ef6318ae38322b5a4a0619b581924290f114fa74 (patch) | |
tree | 8207f494e9a9d4fecb83453673994978d050b7e2 | |
parent | b672f1974d3291cd0ad56c3c54f5398accc392b8 (diff) |
Release resources on shutdown..
Change-Id: I7758f5ba1f58e19d92e394133cccd449ce5a1756
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
-rw-r--r-- | src/quick/items/qquickwindowmanager.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/quick/items/qquickwindowmanager.cpp b/src/quick/items/qquickwindowmanager.cpp index 61962bb5a3..b999e6f85d 100644 --- a/src/quick/items/qquickwindowmanager.cpp +++ b/src/quick/items/qquickwindowmanager.cpp @@ -176,6 +176,11 @@ public: connect(animationDriver, SIGNAL(stopped()), this, SLOT(animationStopped())); } + ~QQuickRenderThreadSingleContextWindowManager() + { + releaseResources(); + } + QSGContext *sceneGraphContext() const { return sg; } void show(QQuickCanvas *canvas); @@ -286,6 +291,10 @@ class QQuickTrivialWindowManager : public QObject, public QQuickWindowManager { public: QQuickTrivialWindowManager(); + ~QQuickTrivialWindowManager() + { + releaseResources(); + } void show(QQuickCanvas *canvas); void hide(QQuickCanvas *canvas); @@ -786,7 +795,6 @@ void QQuickRenderThreadSingleContextWindowManager::releaseResourcesInThread() #ifdef THREAD_DEBUG printf(" RenderThread: releasing resources...\n"); #endif - QQuickCanvas *canvas = masterCanvas(); QWindow *tmpSurface = 0; @@ -822,7 +830,7 @@ void QQuickRenderThreadSingleContextWindowManager::releaseResources() runToReleaseResources = true; start(); - while (gl) { + while (isRunning()) { wait(); } } @@ -1217,7 +1225,7 @@ void QQuickTrivialWindowManager::canvasDestroyed(QQuickCanvas *canvas) void QQuickTrivialWindowManager::releaseResources() { - if (m_windows.size() == 0) { + if (m_windows.size() == 0 && gl) { QQuickCanvas *canvas = masterCanvas(); QWindow *tmpSurface = 0; |