diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-03 13:26:07 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-03 14:06:03 +0300 |
commit | 58979c740aa4814692e6555840e2fe4d3913561b (patch) | |
tree | b5b50b44011fa49788d84808c4d4e25db46599c4 /src/datavis3d/engine/scatter3dcontroller.cpp | |
parent | 5eedaa018b6a1b1527b523d3018ac026af29eb33 (diff) |
Only render the scene when something changes.
This seems to improve frame rate, too.
Task-number: QTRD-2179
Change-Id: Icb3ddc5ba651ce0982068bcf7ab09c67be183717
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavis3d/engine/scatter3dcontroller.cpp')
-rw-r--r-- | src/datavis3d/engine/scatter3dcontroller.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/datavis3d/engine/scatter3dcontroller.cpp b/src/datavis3d/engine/scatter3dcontroller.cpp index 10fa1d14..93070014 100644 --- a/src/datavis3d/engine/scatter3dcontroller.cpp +++ b/src/datavis3d/engine/scatter3dcontroller.cpp @@ -66,6 +66,7 @@ void Scatter3DController::initializeOpenGL() QObject::connect(m_renderer, &Scatter3DRenderer::selectedItemIndexChanged, this, &Scatter3DController::handleSelectedItemIndexChanged, Qt::QueuedConnection); + emitNeedRender(); } void Scatter3DController::synchDataToRenderer() @@ -112,7 +113,7 @@ void Scatter3DController::setSlicingActive(bool isSlicing) m_isSlicingActivated = isSlicing; m_changeTracker.slicingActiveChanged = true; - emit slicingActiveChanged(m_isSlicingActivated); + emitNeedRender(); } Scatter3DController::MouseState Scatter3DController::mouseState() @@ -127,6 +128,7 @@ void Scatter3DController::mouseDoubleClickEvent(QMouseEvent *event) m_mouseState = Scatter3DController::MouseOnScene; // update mouse positions to prevent jumping when releasing or repressing a button m_mousePos = event->pos(); + emitNeedRender(); } } @@ -197,6 +199,7 @@ void Scatter3DController::mousePressEvent(QMouseEvent *event, const QPoint &mous m_mousePos = mousePos; } m_cameraHelper->updateMousePos(m_mousePos); + emitNeedRender(); } void Scatter3DController::mouseReleaseEvent(QMouseEvent *event, const QPoint &mousePos) @@ -206,6 +209,7 @@ void Scatter3DController::mouseReleaseEvent(QMouseEvent *event, const QPoint &mo // update mouse positions to prevent jumping when releasing or repressing a button m_mousePos = mousePos; m_cameraHelper->updateMousePos(mousePos); + emitNeedRender(); } m_mouseState = Scatter3DController::MouseNone; } @@ -213,8 +217,10 @@ void Scatter3DController::mouseReleaseEvent(QMouseEvent *event, const QPoint &mo void Scatter3DController::mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos) { Q_UNUSED(event); - if (Scatter3DController::MouseRotating == m_mouseState) + if (Scatter3DController::MouseRotating == m_mouseState) { m_mousePos = mousePos; + emitNeedRender(); + } } void Scatter3DController::wheelEvent(QWheelEvent *event) @@ -260,7 +266,6 @@ void Scatter3DController::setActiveDataProxy(QAbstractDataProxy *proxy) this, &Scatter3DController::handleItemsInserted); adjustValueAxisRange(); - m_isDataDirty = true; setSelectedItemIndex(noSelectionIndex()); } @@ -270,6 +275,7 @@ void Scatter3DController::handleArrayReset() adjustValueAxisRange(); m_isDataDirty = true; setSelectedItemIndex(noSelectionIndex()); + emitNeedRender(); } void Scatter3DController::handleItemsAdded(int startIndex, int count) @@ -279,6 +285,7 @@ void Scatter3DController::handleItemsAdded(int startIndex, int count) // TODO should dirty only affected values? adjustValueAxisRange(); m_isDataDirty = true; + emitNeedRender(); } void Scatter3DController::handleItemsChanged(int startIndex, int count) @@ -288,6 +295,7 @@ void Scatter3DController::handleItemsChanged(int startIndex, int count) // TODO should dirty only affected values? adjustValueAxisRange(); m_isDataDirty = true; + emitNeedRender(); } void Scatter3DController::handleItemsRemoved(int startIndex, int count) @@ -299,6 +307,7 @@ void Scatter3DController::handleItemsRemoved(int startIndex, int count) m_isDataDirty = true; if (startIndex >= static_cast<QScatterDataProxy *>(m_data)->itemCount()) setSelectedItemIndex(noSelectionIndex()); + emitNeedRender(); } void Scatter3DController::handleItemsInserted(int startIndex, int count) @@ -308,6 +317,7 @@ void Scatter3DController::handleItemsInserted(int startIndex, int count) // TODO should dirty only affected values? adjustValueAxisRange(); m_isDataDirty = true; + emitNeedRender(); } void Scatter3DController::handleSelectedItemIndexChanged(int index) @@ -315,6 +325,7 @@ void Scatter3DController::handleSelectedItemIndexChanged(int index) if (index != m_selectedItemIndex) { m_selectedItemIndex = index; emit selectedItemIndexChanged(index); + emitNeedRender(); } } @@ -365,6 +376,7 @@ void Scatter3DController::setSelectedItemIndex(int index) m_selectedItemIndex = index; m_changeTracker.selectedItemIndexChanged = true; emit selectedItemIndexChanged(index); + emitNeedRender(); } } |