summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/bars3drenderer.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-12 09:53:52 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-12 10:31:27 +0300
commit7f8966b035c9fd73d2cde04521c92892feefc0f9 (patch)
tree55fee47c70805ff6bd4df1a8cd7693ea34132b27 /src/datavisualization/engine/bars3drenderer.cpp
parent1262c6562d7264c9fe4caf2f433615348c0f2ef8 (diff)
Fix Q3DScene caching
Task-number: QTRD-2258 Change-Id: Ifce23dca40566e75398e00975e8b2159b325739e Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com> Reviewed-by: Pasi Keränen <pasi.keranen@digia.com>
Diffstat (limited to 'src/datavisualization/engine/bars3drenderer.cpp')
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index 6331ee8e..387f8530 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -197,7 +197,8 @@ void Bars3DRenderer::updateScene(Q3DScene *scene)
void Bars3DRenderer::render(GLuint defaultFboHandle)
{
- updateSlicingActive(m_cachedScene->isSlicingActivated());
+ bool slicingActivated = m_cachedScene->isSlicingActivated();
+ updateSlicingActive(slicingActivated);
// Handle GL state setup for FBO buffers and clearing of the render surface
Abstract3DRenderer::render(defaultFboHandle);
@@ -208,6 +209,11 @@ void Bars3DRenderer::render(GLuint defaultFboHandle)
// Draw bars scene
drawScene(defaultFboHandle);
+
+ // If slicing has been activated by this render pass, we need another render
+ if (slicingActivated != m_cachedScene->isSlicingActivated())
+ emit needRender();
+
}
void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel,
@@ -1344,8 +1350,9 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
m_selectedBar = NULL;
if (m_cachedIsSlicingActivated
&& (m_selection == selectionSkipColor
- || QDataVis::InputOnOverview == m_controller->inputState()))
+ || QDataVis::InputOnOverview == m_controller->inputState())) {
m_cachedScene->setSlicingActivated(false);
+ }
} else if (m_cachedSelectionMode >= QDataVis::ModeSliceRow && selectionDirty) {
// Activate slice mode
m_cachedScene->setSlicingActivated(true);