[Bf-blender-cvs] [9cea429] master: Fix T46431: Init glew before glx-context crashes
Campbell Barton
noreply at git.blender.org
Mon Oct 12 06:14:54 CEST 2015
Commit: 9cea429f787727d8a19b9dfe179a5b7ba2d92fd0
Author: Campbell Barton
Date: Mon Oct 12 15:04:59 2015 +1100
Branches: master
https://developer.blender.org/rB9cea429f787727d8a19b9dfe179a5b7ba2d92fd0
Fix T46431: Init glew before glx-context crashes
Initialize glxew before glew,
so we can check whats supported before creating the context.
This also removes need for mxIgnoreNoVersion.
===================================================================
M intern/ghost/intern/GHOST_ContextGLX.cpp
M intern/glew-mx/glew-mx.h
M intern/glew-mx/intern/glew-mx.c
===================================================================
diff --git a/intern/ghost/intern/GHOST_ContextGLX.cpp b/intern/ghost/intern/GHOST_ContextGLX.cpp
index 4d45d49..c431e7e 100644
--- a/intern/ghost/intern/GHOST_ContextGLX.cpp
+++ b/intern/ghost/intern/GHOST_ContextGLX.cpp
@@ -40,9 +40,6 @@
#include <cstdio>
#include <cstring>
-/* this should eventually be enabled, but causes T46431 */
-// #define USE_CONTEXT_FLAGS
-
#ifdef WITH_GLEW_MX
GLXEWContext *glxewContext = NULL;
#endif
@@ -156,19 +153,11 @@ 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
+ /* important to initialize only glxew (_not_ glew),
+ * since this breaks w/ Mesa's `swrast`, see: T46431 */
+ glxewInit();
-#ifdef USE_CONTEXT_FLAGS
- if (GLXEW_ARB_create_context)
-#else
- if (0)
-#endif
- {
+ if (GLXEW_ARB_create_context) {
int profileBitCore = m_contextProfileMask & GLX_CONTEXT_CORE_PROFILE_BIT_ARB;
int profileBitCompat = m_contextProfileMask & GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB;
@@ -273,11 +262,9 @@ 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);
diff --git a/intern/glew-mx/glew-mx.h b/intern/glew-mx/glew-mx.h
index 92450d6..ed17ea4 100644
--- a/intern/glew-mx/glew-mx.h
+++ b/intern/glew-mx/glew-mx.h
@@ -95,8 +95,6 @@ MXContext *mxGetCurrentContext (void);
void mxMakeCurrentContext(MXContext *ctx);
void mxDestroyContext (MXContext *ctx);
-void mxIgnoreNoVersion(int ignore);
-
GLenum glew_chk(GLenum error, const char *file, int line, const char *text);
#ifndef NDEBUG
diff --git a/intern/glew-mx/intern/glew-mx.c b/intern/glew-mx/intern/glew-mx.c
index 7892067..6fbb1a7 100644
--- a/intern/glew-mx/intern/glew-mx.c
+++ b/intern/glew-mx/intern/glew-mx.c
@@ -34,8 +34,6 @@
#include <stdio.h>
#include <stdlib.h>
-static int ignore_version = 0;
-
#define CASE_CODE_RETURN_STR(code) case code: return #code;
static const char *get_glew_error_enum_string(GLenum error)
@@ -63,7 +61,7 @@ GLenum glew_chk(GLenum error, const char *file, int line, const char *text)
const char *code = get_glew_error_enum_string(error);
const char *msg = (const char *)glewGetErrorString(error);
- if (error == GLEW_ERROR_NO_GL_VERSION && ignore_version)
+ if (error == GLEW_ERROR_NO_GL_VERSION)
return GLEW_OK;
#ifndef NDEBUG
@@ -144,8 +142,3 @@ void mxDestroyContext(MXContext *ctx)
(void)ctx;
#endif
}
-
-void mxIgnoreNoVersion(int ignore)
-{
- ignore_version = ignore;
-}
More information about the Bf-blender-cvs
mailing list