From 1aafc43b5646eae86a53a7121aa29e0096b5fde8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Tue, 3 Dec 2013 09:03:54 +0200 Subject: Fixed crash on selection with no visible series Task-number: QTRD-2667 Change-Id: I460ba87b4bcb639328439f6e1b698ca1323c0968 Reviewed-by: Miikka Heikkinen --- src/datavisualization/engine/bars3drenderer.cpp | 2 +- src/datavisualization/engine/scatter3drenderer.cpp | 2 +- src/datavisualization/engine/surface3drenderer.cpp | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src/datavisualization') diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index c3e8bf79..03612b87 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -881,7 +881,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle) // TODO: Selection must be enabled currently to support clicked signal. (QTRD-2517) // Skip selection mode drawing if we're slicing or have no selection mode if (!m_cachedIsSlicingActivated && m_cachedSelectionMode > QDataVis::SelectionNone - && m_selectionState == SelectOnScene) { + && m_selectionState == SelectOnScene && seriesCount > 0) { // Bind selection shader m_selectionShader->bind(); diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp index 74e589fd..11df55dd 100644 --- a/src/datavisualization/engine/scatter3drenderer.cpp +++ b/src/datavisualization/engine/scatter3drenderer.cpp @@ -434,7 +434,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) // Skip selection mode drawing if we have no selection mode if (m_cachedSelectionMode > QDataVis::SelectionNone - && SelectOnScene == m_selectionState) { + && SelectOnScene == m_selectionState && seriesCount > 0) { // Draw dots to selection buffer glBindFramebuffer(GL_FRAMEBUFFER, m_selectionFrameBuffer); glEnable(GL_DEPTH_TEST); // Needed, otherwise the depth render buffer is not used diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index 46857130..5b9aa9d8 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -936,7 +936,8 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle) // Draw selection buffer if (!m_cachedIsSlicingActivated && m_surfaceObj && m_selectionState == SelectOnScene && m_cachedSelectionMode > QDataVis::SelectionNone - && (m_cachedSurfaceVisible || m_cachedSurfaceGridOn)) { + && (m_cachedSurfaceVisible || m_cachedSurfaceGridOn) + && m_visibleSeriesList.size() > 0) { m_selectionShader->bind(); glBindFramebuffer(GL_FRAMEBUFFER, m_selectionFrameBuffer); glEnable(GL_DEPTH_TEST); // Needed, otherwise the depth render buffer is not used -- cgit v1.2.3