diff options
author | Gunnar Sletta <gunnar.sletta@digia.com> | 2013-02-18 09:45:24 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-18 10:39:20 +0100 |
commit | 58471eb3f267dbee728b1c13f87458f2ee509bfa (patch) | |
tree | 0ce323004f55ca8c07644e48eeeffdc5b9ec2954 | |
parent | fa6499d3607f87d79ed58307cef4af49313140a6 (diff) |
GUI render loop did not render on expose, nor clean up properly.
Change-Id: I6f9ab43ad6d149295487d9f69ceb0131cd142776
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
-rw-r--r-- | src/quick/scenegraph/qsgrenderloop.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/quick/scenegraph/qsgrenderloop.cpp b/src/quick/scenegraph/qsgrenderloop.cpp index 9117b2cffa..83e8d3f17a 100644 --- a/src/quick/scenegraph/qsgrenderloop.cpp +++ b/src/quick/scenegraph/qsgrenderloop.cpp @@ -194,15 +194,24 @@ void QSGGuiThreadRenderLoop::hide(QQuickWindow *window) cd->cleanupNodesOnShutdown(); if (m_windows.size() == 0) { - sg->invalidate(); - delete gl; - gl = 0; + if (!cd->persistentSceneGraph) { + sg->invalidate(); + if (!cd->persistentGLContext) { + delete gl; + gl = 0; + } + } } } void QSGGuiThreadRenderLoop::windowDestroyed(QQuickWindow *window) { hide(window); + if (m_windows.size() == 0) { + sg->invalidate(); + delete gl; + gl = 0; + } } void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window) @@ -297,7 +306,7 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window) void QSGGuiThreadRenderLoop::exposureChanged(QQuickWindow *window) { if (window->isExposed()) - maybeUpdate(window); + renderWindow(window); } QImage QSGGuiThreadRenderLoop::grab(QQuickWindow *window) |