diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-10-04 09:55:49 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-10-04 10:09:52 +0300 |
commit | ad44f9774e8da73a5d3df80b3691adae9376abce (patch) | |
tree | 6a9c8da25147dfa414bba2aeed7799b45dfbb78f /src/datavisualization/engine/surface3drenderer.cpp | |
parent | 5fab5d9a23c84a5de8e1117d821556779264494f (diff) |
Fixed double-tap issues with surface slice
Task-number: QTRD-2370
Task-number: QTRD-2371
Change-Id: I389f70f68ac4d6d478947b736b602fba62b46bef
Change-Id: I389f70f68ac4d6d478947b736b602fba62b46bef
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/engine/surface3drenderer.cpp')
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index 9f40e410..28a81e0d 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -413,7 +413,6 @@ void Surface3DRenderer::updateScene(Q3DScene *scene) // TODO: Move these to more suitable place e.g. controller should be controlling the viewports. scene->setSecondarySubViewport(m_sliceViewPort); scene->setPrimarySubViewport(m_mainViewPort); - scene->setUnderSideCameraEnabled(false); // Set initial camera position // X must be 0 for rotation to work - we can use "setCameraRotation" for setting it later @@ -442,16 +441,22 @@ void Surface3DRenderer::render(GLuint defaultFboHandle) // Handle GL state setup for FBO buffers and clearing of the render surface Abstract3DRenderer::render(defaultFboHandle); - // If slice selection is on, draw the sliced scene - if (m_cachedIsSlicingActivated) + // In slice mode; draw slice and render selection ball + if (m_cachedIsSlicingActivated && m_selectionPointer && m_selectionActive) { drawSlicedScene(); + m_selectionPointer->render(defaultFboHandle); + } // Draw the surface scene drawScene(defaultFboHandle); - // If selection pointer is active, pass the render request for it also - if (m_selectionPointer && m_selectionActive) + // Render selection ball if not in slice mode + if (!m_cachedIsSlicingActivated && m_selectionPointer && m_selectionActive) m_selectionPointer->render(defaultFboHandle); + + // If slicing has been activated by this render pass, we need another render + if (slicingActivated != m_cachedScene->isSlicingActive()) + emit needRender(); } void Surface3DRenderer::drawSlicedScene() |