summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/surface3drenderer.cpp
diff options
context:
space:
mode:
authorTomi Korpipaa <tomi.korpipaa@qt.io>2019-04-29 12:50:14 +0300
committerTomi Korpipää <tomi.korpipaa@qt.io>2019-04-29 12:58:36 +0000
commite4cd15e388f675a80a9c257655a580b1b53c240a (patch)
tree07840b4acf5790a88dfe56740e5a4cab9ec8bf03 /src/datavisualization/engine/surface3drenderer.cpp
parentfd902c04b912deb81f41da0cd216d2cb1c86289b (diff)
Fix hanging at application exit
Task-number: QTBUG-75256 Task-number: QTBUG-69627 Change-Id: If4221c8fcf783daf4bf6a38dbf1b9633a20eafb0 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/datavisualization/engine/surface3drenderer.cpp')
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index b6125719..be7ccf66 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -95,17 +95,7 @@ Surface3DRenderer::Surface3DRenderer(Surface3DController *controller)
Surface3DRenderer::~Surface3DRenderer()
{
- fixContextBeforeDelete();
-
- if (QOpenGLContext::currentContext()) {
- m_textureHelper->glDeleteFramebuffers(1, &m_depthFrameBuffer);
- m_textureHelper->glDeleteRenderbuffers(1, &m_selectionDepthBuffer);
- m_textureHelper->glDeleteFramebuffers(1, &m_selectionFrameBuffer);
-
- m_textureHelper->deleteTexture(&m_noShadowTexture);
- m_textureHelper->deleteTexture(&m_depthTexture);
- m_textureHelper->deleteTexture(&m_selectionResultTexture);
- }
+ contextCleanup();
delete m_depthShader;
delete m_backgroundShader;
delete m_selectionShader;
@@ -118,6 +108,19 @@ Surface3DRenderer::~Surface3DRenderer()
delete m_surfaceSliceSmoothShader;
}
+void Surface3DRenderer::contextCleanup()
+{
+ if (QOpenGLContext::currentContext()) {
+ m_textureHelper->glDeleteFramebuffers(1, &m_depthFrameBuffer);
+ m_textureHelper->glDeleteRenderbuffers(1, &m_selectionDepthBuffer);
+ m_textureHelper->glDeleteFramebuffers(1, &m_selectionFrameBuffer);
+
+ m_textureHelper->deleteTexture(&m_noShadowTexture);
+ m_textureHelper->deleteTexture(&m_depthTexture);
+ m_textureHelper->deleteTexture(&m_selectionResultTexture);
+ }
+}
+
void Surface3DRenderer::initializeOpenGL()
{
Abstract3DRenderer::initializeOpenGL();