[Bf-blender-cvs] [23f7e16] blender-v2.76-release: Fix/Workaround T46431: blender-softwaregl crashes

Campbell Barton noreply at git.blender.org
Sat Oct 10 10:48:50 CEST 2015


Commit: 23f7e16960f39137ed7145eb5b950cb88f61d557
Author: Campbell Barton
Date:   Sat Oct 10 19:39:35 2015 +1100
Branches: blender-v2.76-release
https://developer.blender.org/rB23f7e16960f39137ed7145eb5b950cb88f61d557

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);




More information about the Bf-blender-cvs mailing list