diff options
author | Tomi Korpipaa <tomi.korpipaa@qt.io> | 2019-04-29 12:50:14 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@qt.io> | 2019-04-29 12:58:36 +0000 |
commit | e4cd15e388f675a80a9c257655a580b1b53c240a (patch) | |
tree | 07840b4acf5790a88dfe56740e5a4cab9ec8bf03 /src/datavisualization/engine/surface3drenderer.cpp | |
parent | fd902c04b912deb81f41da0cd216d2cb1c86289b (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.cpp | 25 |
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(); |