diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-03-16 17:19:05 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-03-17 15:57:01 +0000 |
commit | d5b89632b5c6707660003ef762037e2e6074422e (patch) | |
tree | 3607465b205d7a0182f63c51e63759ca45551f3a | |
parent | a7f2e6bf8c1bc569c56d713894f442c7fed63264 (diff) | |
download | qtwebkit-d5b89632b5c6707660003ef762037e2e6074422e.tar.gz |
Fix crash on exit in OpenGL accelerated mode
Do not try to cleanup on an already destroyed OpenGL context.
Change-Id: I56d2a07700b1f69100be7fc9537dd0bc69449a0c
Reviewed-by: Michael BrĂ¼ning <michael.bruning@theqtcompany.com>
-rw-r--r-- | Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp b/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp index 0c9fddc83..155678d94 100644 --- a/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp +++ b/Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp @@ -441,22 +441,23 @@ GraphicsContext3D::~GraphicsContext3D() if (!m_private) return; - makeContextCurrent(); - m_functions->glDeleteTextures(1, &m_texture); - m_functions->glDeleteFramebuffers(1, &m_fbo); - if (m_attrs.antialias) { - m_functions->glDeleteRenderbuffers(1, &m_multisampleColorBuffer); - m_functions->glDeleteFramebuffers(1, &m_multisampleFBO); - if (m_attrs.stencil || m_attrs.depth) - m_functions->glDeleteRenderbuffers(1, &m_multisampleDepthStencilBuffer); - } else if (m_attrs.stencil || m_attrs.depth) { - if (isGLES2Compliant()) { - if (m_attrs.depth) - m_functions->glDeleteRenderbuffers(1, &m_depthBuffer); - if (m_attrs.stencil) - m_functions->glDeleteRenderbuffers(1, &m_stencilBuffer); + if (makeContextCurrent()) { + m_functions->glDeleteTextures(1, &m_texture); + m_functions->glDeleteFramebuffers(1, &m_fbo); + if (m_attrs.antialias) { + m_functions->glDeleteRenderbuffers(1, &m_multisampleColorBuffer); + m_functions->glDeleteFramebuffers(1, &m_multisampleFBO); + if (m_attrs.stencil || m_attrs.depth) + m_functions->glDeleteRenderbuffers(1, &m_multisampleDepthStencilBuffer); + } else if (m_attrs.stencil || m_attrs.depth) { + if (isGLES2Compliant()) { + if (m_attrs.depth) + m_functions->glDeleteRenderbuffers(1, &m_depthBuffer); + if (m_attrs.stencil) + m_functions->glDeleteRenderbuffers(1, &m_stencilBuffer); + } + m_functions->glDeleteRenderbuffers(1, &m_depthStencilBuffer); } - m_functions->glDeleteRenderbuffers(1, &m_depthStencilBuffer); } m_functions = 0; |