[Cairo] GLContextGLX releases the context with an uninitialized display
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 May 2012 00:34:48 +0000 (00:34 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 May 2012 00:34:48 +0000 (00:34 +0000)
https://bugs.webkit.org/show_bug.cgi?id=86039

Patch by Martin Robinson <mrobinson@igalia.com> on 2012-05-09
Reviewed by Philippe Normand.

No new tests. This does not change behavior on most machines, but has
the potential to prevent a pretty nasty crash on others.

Use the shared display to release GLX contexts instead of the uninitialized
m_display member.

* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::GLContextGLX::~GLContextGLX): Release the display with the shared
display.
* platform/graphics/glx/GLContextGLX.h:
(GLContextGLX): Remove the m_display member.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@116585 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/glx/GLContextGLX.cpp
Source/WebCore/platform/graphics/glx/GLContextGLX.h

index cb1cd9c..48413db 100644 (file)
@@ -1,3 +1,22 @@
+2012-05-09  Martin Robinson  <mrobinson@igalia.com>
+
+        [Cairo] GLContextGLX releases the context with an uninitialized display
+        https://bugs.webkit.org/show_bug.cgi?id=86039
+
+        Reviewed by Philippe Normand.
+
+        No new tests. This does not change behavior on most machines, but has
+        the potential to prevent a pretty nasty crash on others.
+
+        Use the shared display to release GLX contexts instead of the uninitialized
+        m_display member.
+
+        * platform/graphics/glx/GLContextGLX.cpp:
+        (WebCore::GLContextGLX::~GLContextGLX): Release the display with the shared
+        display.
+        * platform/graphics/glx/GLContextGLX.h:
+        (GLContextGLX): Remove the m_display member.
+
 2012-05-09  Tony Gentilcore  <tonyg@chromium.org>
 
         Subresources loaded after a reload completes shouldn't be revalidated.
index 6062e43..e0f3cdd 100644 (file)
@@ -240,8 +240,8 @@ GLContextGLX::~GLContextGLX()
         // This may be necessary to prevent crashes with NVidia's closed source drivers. Originally
         // from Mozilla's 3D canvas implementation at: http://bitbucket.org/ilmari/canvas3d/
         glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
-        glXMakeCurrent(m_display, None, None);
-        glXDestroyContext(m_display, m_context);
+        glXMakeCurrent(sharedDisplay(), None, None);
+        glXDestroyContext(sharedDisplay(), m_context);
     }
 
     if (m_pbuffer) {
index 0a7a924..01a884f 100644 (file)
@@ -63,7 +63,6 @@ private:
     GLContextGLX(GLXContext, Pixmap, GLXPixmap);
 
     GLXContext m_context;
-    Display* m_display;
     XID m_window;
     GLXPbuffer m_pbuffer;
     Pixmap m_pixmap;