summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-03-16 17:19:05 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-03-17 15:57:01 +0000
commitd5b89632b5c6707660003ef762037e2e6074422e (patch)
tree3607465b205d7a0182f63c51e63759ca45551f3a
parenta7f2e6bf8c1bc569c56d713894f442c7fed63264 (diff)
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.cpp31
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;