OSDN Git Service

QmlDesigner.NodeInstances: Restart render timer in Preview
authorMarco Bubke <marco.bubke@nokia.com>
Thu, 13 Jan 2011 14:10:43 +0000 (15:10 +0100)
committerMarco Bubke <marco.bubke@nokia.com>
Thu, 13 Jan 2011 14:42:54 +0000 (15:42 +0100)
Now rendering is only happen if no changes happen anymore.

src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp
src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h
src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp
src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h

index 6557365..495438c 100644 (file)
@@ -135,6 +135,21 @@ void NodeInstanceServer::setSlowRenderTimerInterval(int timerInterval)
     m_slowRenderTimerInterval = timerInterval;
 }
 
+void NodeInstanceServer::setTimerId(int timerId)
+{
+    m_timer = timerId;
+}
+
+int NodeInstanceServer::timerId() const
+{
+    return m_timer;
+}
+
+int NodeInstanceServer::renderTimerInterval() const
+{
+    return m_renderTimerInterval;
+}
+
 void NodeInstanceServer::startRenderTimer()
 {
     if (m_slowRenderTimer)
@@ -151,6 +166,11 @@ void NodeInstanceServer::slowDownRenderTimer()
     if (!m_slowRenderTimer)
         stopRenderTimer();
 
+    if (m_timer != 0) {
+        killTimer(m_timer);
+        m_timer = 0;
+    }
+
     if (m_timer == 0)
         m_timer = startTimer(m_slowRenderTimerInterval);
 
index b75ceaa..dd2fc12 100644 (file)
@@ -118,10 +118,11 @@ protected:
 
     void addChangedProperty(const InstancePropertyPair &property);
 
-    void startRenderTimer();
+    virtual void startRenderTimer();
     void slowDownRenderTimer();
     void stopRenderTimer();
     void setRenderTimerInterval(int timerInterval);
+    int renderTimerInterval() const;
     void setSlowRenderTimerInterval(int timerInterval);
 
     void initializeDeclarativeView();
@@ -129,6 +130,9 @@ protected:
 
     QImage renderPreviewImage();
 
+    void setTimerId(int timerId);
+    int timerId() const;
+
 private:
     ServerNodeInstance m_rootNodeInstance;
     ServerNodeInstance m_activeStateInstance;
index 5ba1cf2..e88cb2e 100644 (file)
@@ -7,7 +7,7 @@ namespace QmlDesigner {
 PreviewNodeInstanceServer::PreviewNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) :
     NodeInstanceServer(nodeInstanceClient)
 {
-    setRenderTimerInterval(50);
+    setRenderTimerInterval(500);
     setSlowRenderTimerInterval(10000);
 }
 
@@ -18,6 +18,15 @@ void PreviewNodeInstanceServer::createScene(const CreateSceneCommand &command)
 
     startRenderTimer();
 }
+void PreviewNodeInstanceServer::startRenderTimer()
+{
+    if (timerId() != 0)
+        killTimer(timerId());
+
+    int timerId = startTimer(renderTimerInterval());
+
+    setTimerId(timerId);
+}
 
 void PreviewNodeInstanceServer::findItemChangesAndSendChangeCommands()
 {
index 11c0559..9a0de11 100644 (file)
@@ -15,6 +15,7 @@ public:
 
 protected:
     void findItemChangesAndSendChangeCommands();
+    void startRenderTimer();
 
 private:
     ServerNodeInstance m_actualState;