aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@digia.com>2014-02-28 11:07:11 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-28 12:08:46 +0100
commit6ef802ff6ed1cd234848b65fdad56dc3b0579cff (patch)
treeec709a1186d1a4ee71eeb036be203497a0e9def6 /src/quick
parent0a23e840e27964fad75e8b0ef7b31701c51f93d5 (diff)
QQuickWidget: handle hide and show events properly
Task-number: QTBUG-37062 Change-Id: I3763385168eaa0ccd009ada563f56ea0251029a5 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/items/qquickrendercontrol.cpp20
-rw-r--r--src/quick/items/qquickrendercontrol_p.h1
2 files changed, 21 insertions, 0 deletions
diff --git a/src/quick/items/qquickrendercontrol.cpp b/src/quick/items/qquickrendercontrol.cpp
index faee1358ae..16ed6f0e10 100644
--- a/src/quick/items/qquickrendercontrol.cpp
+++ b/src/quick/items/qquickrendercontrol.cpp
@@ -162,6 +162,26 @@ bool QQuickRenderControl::sync()
}
/*!
+ Stop rendering and release resources. This function is typically
+ called when the window is hidden. Requires a current context.
+ */
+void QQuickRenderControl::stop()
+{
+ Q_D(QQuickRenderControl);
+ if (!d->window)
+ return;
+
+ QQuickWindowPrivate *cd = QQuickWindowPrivate::get(d->window);
+ cd->fireAboutToStop();
+ cd->cleanupNodesOnShutdown();
+
+ if (!cd->persistentSceneGraph) {
+ d->rc->invalidate();
+ QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
+ }
+}
+
+/*!
Render the scenegraph using the current context.
*/
void QQuickRenderControl::render()
diff --git a/src/quick/items/qquickrendercontrol_p.h b/src/quick/items/qquickrendercontrol_p.h
index 7255a9ae0b..98dc946303 100644
--- a/src/quick/items/qquickrendercontrol_p.h
+++ b/src/quick/items/qquickrendercontrol_p.h
@@ -71,6 +71,7 @@ public:
void polishItems();
void render();
bool sync();
+ void stop();
QImage grab();