aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@jollamobile.com>2014-03-20 13:01:51 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-27 18:58:50 +0100
commit1d3ac919f2dafaa6482864c1e1940da5636bdc8c (patch)
tree295c520e572751e5648f56b964ac78b07fc631ce /src/quick/scenegraph
parentd453b38415adcaef814ec54c3419673d2dbf4ce7 (diff)
Let render loop be more tolerant wrt when markDirty is called.
Change-Id: I95f1d6fe4695a09b1b6ccaf026137dabc22ec82c Reviewed-by: Michael Brasser <michael.brasser@live.com>
Diffstat (limited to 'src/quick/scenegraph')
-rw-r--r--src/quick/scenegraph/coreapi/qsgrenderer_p.h2
-rw-r--r--src/quick/scenegraph/qsgthreadedrenderloop.cpp4
2 files changed, 6 insertions, 0 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgrenderer_p.h b/src/quick/scenegraph/coreapi/qsgrenderer_p.h
index 55c9444365..eddd38a68f 100644
--- a/src/quick/scenegraph/coreapi/qsgrenderer_p.h
+++ b/src/quick/scenegraph/coreapi/qsgrenderer_p.h
@@ -134,6 +134,8 @@ public:
virtual void setCustomRenderMode(const QByteArray &) { };
+ void clearChangedFlag() { m_changed_emitted = false; }
+
Q_SIGNALS:
void sceneGraphChanged(); // Add, remove, ChangeFlags changes...
diff --git a/src/quick/scenegraph/qsgthreadedrenderloop.cpp b/src/quick/scenegraph/qsgthreadedrenderloop.cpp
index 40243a5b1b..9edca87d70 100644
--- a/src/quick/scenegraph/qsgthreadedrenderloop.cpp
+++ b/src/quick/scenegraph/qsgthreadedrenderloop.cpp
@@ -538,6 +538,10 @@ void QSGRenderThread::sync()
if (current) {
QQuickWindowPrivate *d = QQuickWindowPrivate::get(window);
bool hadRenderer = d->renderer != 0;
+ // If the scene graph was touched since the last sync() make sure it sends the
+ // changed signal.
+ if (d->renderer)
+ d->renderer->clearChangedFlag();
d->syncSceneGraph();
if (!hadRenderer && d->renderer) {
QSG_RT_DEBUG(" - renderer was created, hooking up changed signal");