aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/qsgthreadedrenderloop.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/scenegraph/qsgthreadedrenderloop.cpp')
-rw-r--r--src/quick/scenegraph/qsgthreadedrenderloop.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/quick/scenegraph/qsgthreadedrenderloop.cpp b/src/quick/scenegraph/qsgthreadedrenderloop.cpp
index a4524b5b33..a47aa4f359 100644
--- a/src/quick/scenegraph/qsgthreadedrenderloop.cpp
+++ b/src/quick/scenegraph/qsgthreadedrenderloop.cpp
@@ -1401,6 +1401,13 @@ void QSGThreadedRenderLoop::maybeUpdate(Window *w)
return;
}
+ // An updatePolish() implementation may call update() to get the QQuickItem
+ // dirtied. That's fine but it also leads to calling this function.
+ // Requesting another update is a waste then since the updatePolish() call
+ // will be followed up with a round of sync and render.
+ if (m_inPolish)
+ return;
+
postUpdateRequest(w);
}
@@ -1507,7 +1514,9 @@ void QSGThreadedRenderLoop::polishAndSync(Window *w, bool inExpose)
Q_TRACE(QSG_polishItems_entry);
QQuickWindowPrivate *d = QQuickWindowPrivate::get(window);
+ m_inPolish = true;
d->polishItems();
+ m_inPolish = false;
if (profileFrames)
polishTime = timer.nsecsElapsed();