From f42ae6c569fd09a17f6554a2c72057239e5477ec Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 10 Oct 2015 19:39:35 +1100 Subject: 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. --- intern/ghost/intern/GHOST_ContextGLX.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_ContextGLX.cpp b/intern/ghost/intern/GHOST_ContextGLX.cpp index 02b43abec6c..4d45d493aa2 100644 --- a/intern/ghost/intern/GHOST_ContextGLX.cpp +++ b/intern/ghost/intern/GHOST_ContextGLX.cpp @@ -40,6 +40,8 @@ #include #include +/* 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); -- cgit v1.2.3