[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