Fix/Workaround T46431: blender-softwaregl crashes
authorCampbell Barton <ideasman42@gmail.com>
Sat, 10 Oct 2015 08:39:35 +0000 (19:39 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 10 Oct 2015 08:39:35 +0000 (19:39 +1100)
Order of initialization bug only impacted mesa's software-gl.

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

intern/ghost/intern/GHOST_ContextGLX.cpp

index 02b43abec6cd9899718a22d9bbc8810a980b8c1d..4d45d493aa218c02f3b49db5b857f8e2cacd4e69 100644 (file)
@@ -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);