diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp index 655736525bb0c9cf43a1daa6c49ec556eb9caad6..495438c58ed1348f70e867f765188e540b4b5895 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp @@ -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); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h index b75ceaa65363d6b930c1bff08a3cd519bd949bd3..dd2fc124b6a03710b050087b65873893fe239535 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.h @@ -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; diff --git a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp index 5ba1cf2982b3037c8b87ac1798c6ff9045bbff3c..e88cb2ef133ec36420cfcb431a24631ad26a9630 100644 --- a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp +++ b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.cpp @@ -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() { diff --git a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h index 11c05595e5618f5646a392c8361e52d216ed1f28..9a0de118858249f59af4d43d6e1ab25dd70e6463 100644 --- a/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h +++ b/src/plugins/qmldesigner/designercore/instances/previewnodeinstanceserver.h @@ -15,6 +15,7 @@ public: protected: void findItemChangesAndSendChangeCommands(); + void startRenderTimer(); private: ServerNodeInstance m_actualState;