diff --git a/intern/gawain/src/gwn_vertex_array_id.cpp b/intern/gawain/src/gwn_vertex_array_id.cpp index 2ab38a8fe18..ad60dea7542 100644 --- a/intern/gawain/src/gwn_vertex_array_id.cpp +++ b/intern/gawain/src/gwn_vertex_array_id.cpp @@ -18,7 +18,7 @@ #include #include -#if 0 +#if TRUST_NO_ONE extern "C" { extern int BLI_thread_is_main(void); // Blender-specific function } @@ -68,8 +68,7 @@ static void clear_orphans(Gwn_Context* ctx) Gwn_Context* GWN_context_create(void) { #if TRUST_NO_ONE - /* We cannot rely on this anymore. */ - // assert(thread_is_main()); + assert(thread_is_main()); #endif Gwn_Context* ctx = new Gwn_Context; glGenVertexArrays(1, &ctx->default_vao); diff --git a/intern/ghost/intern/GHOST_ContextGLX.cpp b/intern/ghost/intern/GHOST_ContextGLX.cpp index 1365a1a9c24..815189b9098 100644 --- a/intern/ghost/intern/GHOST_ContextGLX.cpp +++ b/intern/ghost/intern/GHOST_ContextGLX.cpp @@ -110,9 +110,6 @@ GHOST_TSuccess GHOST_ContextGLX::swapBuffers() GHOST_TSuccess GHOST_ContextGLX::activateDrawingContext() { - if (m_init == false) { - initContext(); - } if (m_display) { return ::glXMakeCurrent(m_display, m_window, m_context) ? GHOST_kSuccess : GHOST_kFailure; } @@ -187,8 +184,7 @@ const bool GLXEW_ARB_create_context_robustness = glxewInit(); #endif /* USE_GLXEW_INIT_WORKAROUND */ - /* Only init the non-offscreen context directly */ - const bool do_init = (m_window != None); + if (GLXEW_ARB_create_context) { int profileBitCore = m_contextProfileMask & GLX_CONTEXT_CORE_PROFILE_BIT_ARB; @@ -308,27 +304,12 @@ const bool GLXEW_ARB_create_context_robustness = GHOST_TSuccess success; if (m_context != NULL) { + const unsigned char *version; + if (!s_sharedContext) s_sharedContext = m_context; s_sharedCount++; - } - - if (do_init) { - success = initContext(); - } - - GHOST_X11_ERROR_HANDLERS_RESTORE(handler_store); - - return success; -} - -GHOST_TSuccess GHOST_ContextGLX::initContext() -{ - GHOST_TSuccess success; - - if (m_context != NULL) { - const unsigned char *version; glXMakeCurrent(m_display, m_window, m_context); @@ -360,12 +341,13 @@ GHOST_TSuccess GHOST_ContextGLX::initContext() success = GHOST_kFailure; } - /* We tag as init even if it fails. */ - m_init = true; + + GHOST_X11_ERROR_HANDLERS_RESTORE(handler_store); return success; } + GHOST_TSuccess GHOST_ContextGLX::releaseNativeHandles() { m_window = 0; diff --git a/intern/ghost/intern/GHOST_ContextGLX.h b/intern/ghost/intern/GHOST_ContextGLX.h index b4d6a841d72..ded1b293659 100644 --- a/intern/ghost/intern/GHOST_ContextGLX.h +++ b/intern/ghost/intern/GHOST_ContextGLX.h @@ -116,7 +116,6 @@ public: private: void initContextGLXEW(); - GHOST_TSuccess initContext(); Display *m_display; GLXFBConfig m_fbconfig; @@ -129,7 +128,6 @@ private: const int m_contextResetNotificationStrategy; GLXContext m_context; - bool m_init; /** The first created OpenGL context (for sharing display lists) */ static GLXContext s_sharedContext; diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index 504e53fd206..b7326ca5842 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -2184,8 +2184,6 @@ void DRW_opengl_context_create(void) } /* This changes the active context. */ DST.gl_context = WM_opengl_context_create(); - /* Make the context active for this thread (main thread) */ - WM_opengl_context_activate(DST.gl_context); /* Be sure to create gawain.context too. */ DST.gwn_context = GWN_context_create(); if (!G.background) {