aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@digia.com>2013-02-18 09:45:24 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-02-18 10:39:20 +0100
commit58471eb3f267dbee728b1c13f87458f2ee509bfa (patch)
tree0ce323004f55ca8c07644e48eeeffdc5b9ec2954
parentfa6499d3607f87d79ed58307cef4af49313140a6 (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.cpp17
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)