Commit: f42ae6c569fd09a17f6554a2c72057239e5477ec
Author: Campbell Barton
Date:   Sat Oct 10 19:39:35 2015 +1100
Branches: master
https://developer.blender.org/rBf42ae6c569fd09a17f6554a2c72057239e5477ec

Fix/Workaround T46431: blender-softwaregl crashes

Order of initialization bug only impacted mesa's software-gl.

For now effectively revert support for glx-context-flags.

===================================================================

M       intern/ghost/intern/GHOST_ContextGLX.cpp

===================================================================

diff --git a/intern/ghost/intern/GHOST_ContextGLX.cpp 
b/intern/ghost/intern/GHOST_ContextGLX.cpp
index 02b43ab..4d45d49 100644
--- a/intern/ghost/intern/GHOST_ContextGLX.cpp
+++ b/intern/ghost/intern/GHOST_ContextGLX.cpp
@@ -40,6 +40,8 @@
 #include <cstdio>
 #include <cstring>
 
+/* this should eventually be enabled, but causes T46431 */
+// #define USE_CONTEXT_FLAGS
 
 #ifdef WITH_GLEW_MX
 GLXEWContext *glxewContext = NULL;
@@ -154,12 +156,19 @@ GHOST_TSuccess 
GHOST_ContextGLX::initializeDrawingContext()
        XIOErrorHandler old_handler_io = 
XSetIOErrorHandler(GHOST_X11_ApplicationIOErrorHandler);
 #endif
 
+#ifdef USE_CONTEXT_FLAGS
        /* needed so 'GLXEW_ARB_create_context' is valid */
        mxIgnoreNoVersion(1);
        initContextGLXEW();
        mxIgnoreNoVersion(0);
+#endif
 
-       if (GLXEW_ARB_create_context) {
+#ifdef USE_CONTEXT_FLAGS
+       if (GLXEW_ARB_create_context)
+#else
+       if (0)
+#endif
+       {
                int profileBitCore   = m_contextProfileMask & 
GLX_CONTEXT_CORE_PROFILE_BIT_ARB;
                int profileBitCompat = m_contextProfileMask & 
GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB;
 
@@ -264,6 +273,12 @@ GHOST_TSuccess GHOST_ContextGLX::initializeDrawingContext()
 
                glXMakeCurrent(m_display, m_window, m_context);
 
+#ifndef USE_CONTEXT_FLAGS
+               // Seems that this has to be called after MakeCurrent,
+               // which means we cannot use glX extensions until after we 
create a context
+               initContextGLXEW();
+#endif
+
                initClearGL();
                ::glXSwapBuffers(m_display, m_window);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to