From 2796fbab947bd9ea57e4f62e47316381fe56f374 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 13 Jan 2011 15:10:43 +0100 Subject: [PATCH] QmlDesigner.NodeInstances: Restart render timer in Preview Now rendering is only happen if no changes happen anymore. --- .../designercore/instances/nodeinstanceserver.cpp | 20 ++++++++++++++++++++ .../designercore/instances/nodeinstanceserver.h | 6 +++++- .../instances/previewnodeinstanceserver.cpp | 11 ++++++++++- .../instances/previewnodeinstanceserver.h | 1 + 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserver.cpp index 655736525b..495438c58e 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 b75ceaa653..dd2fc124b6 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 5ba1cf2982..e88cb2ef13 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 11c05595e5..9a0de11885 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; -- 2.11.0