diff options
-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) |