From 812af85d381ac4fcfa1e0a6b64608de9711f90bf Mon Sep 17 00:00:00 2001
From: Olivier Goffart <olivier.goffart@nokia.com>
Date: Thu, 19 Aug 2010 12:47:43 +0200
Subject: [PATCH] qmlobserver: avoid to stream objects too often.

Limit to once every 5 seconds
---
 .../qmljsdebugger/qdeclarativedesignview.cpp       | 14 +++-----------
 .../qmljsdebugger/qdeclarativedesignview_p.h       |  1 -
 2 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/share/qtcreator/qmljsdebugger/qdeclarativedesignview.cpp b/share/qtcreator/qmljsdebugger/qdeclarativedesignview.cpp
index 5335ca38ed1..de0d21f86bf 100644
--- a/share/qtcreator/qmljsdebugger/qdeclarativedesignview.cpp
+++ b/share/qtcreator/qmljsdebugger/qdeclarativedesignview.cpp
@@ -53,7 +53,6 @@
 namespace QmlViewer {
 
 const int SceneChangeUpdateInterval = 5000;
-const int MaxSceneChangedTimerRestartCount = 15;
 
 Q_GLOBAL_STATIC(QDeclarativeDesignDebugServer, qmlDesignDebugServer)
 
@@ -62,8 +61,7 @@ QDeclarativeDesignViewPrivate::QDeclarativeDesignViewPrivate(QDeclarativeDesignV
     designModeBehavior(false),
     executionPaused(false),
     slowdownFactor(1.0f),
-    toolbar(0),
-    sceneChangedTimerRestartCount(0)
+    toolbar(0)
 {
     sceneChangedTimer.setInterval(SceneChangeUpdateInterval);
     sceneChangedTimer.setSingleShot(true);
@@ -536,18 +534,13 @@ void QDeclarativeDesignViewPrivate::_q_sceneChanged(const QList<QRectF> & /*area
     if (designModeBehavior)
         return;
 
-    sceneChangedTimerRestartCount++;
-    if (sceneChangedTimerRestartCount == MaxSceneChangedTimerRestartCount) {
-        _q_checkSceneItemCount();
-    }
-
-    sceneChangedTimer.start();
+    if (!sceneChangedTimer.isActive())
+        sceneChangedTimer.start();
 }
 
 void QDeclarativeDesignViewPrivate::_q_checkSceneItemCount()
 {
     bool hasNewItems = hasNewGraphicsObjects(q->rootObject());
-    sceneChangedTimerRestartCount = 0;
 
     if (hasNewItems) {
         qmlDesignDebugServer()->sceneItemCountChanged();
@@ -675,7 +668,6 @@ void QDeclarativeDesignViewPrivate::_q_onStatusChanged(QDeclarativeView::Status
 {
     if (status == QDeclarativeView::Ready) {
         if (q->rootObject()) {
-            sceneChangedTimerRestartCount = 0;
             hasNewGraphicsObjects(q->rootObject());
             if (subcomponentEditorTool->contextIndex() != -1)
                 subcomponentEditorTool->clear();
diff --git a/share/qtcreator/qmljsdebugger/qdeclarativedesignview_p.h b/share/qtcreator/qmljsdebugger/qdeclarativedesignview_p.h
index c219ace26a4..54df7cf36b6 100644
--- a/share/qtcreator/qmljsdebugger/qdeclarativedesignview_p.h
+++ b/share/qtcreator/qmljsdebugger/qdeclarativedesignview_p.h
@@ -83,7 +83,6 @@ public:
     qreal slowdownFactor;
 
     QmlToolbar *toolbar;
-    int sceneChangedTimerRestartCount;
     QTimer sceneChangedTimer;
     QSet<QGraphicsObject *> sceneGraphicsObjects;
 
-- 
GitLab