From 3b88cd936ca52def37d9370b86b4605bbb74d353 Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 25 Jun 2013 00:26:18 +0200 Subject: [PATCH] Fixed bug with threads and OpenGL contexts Former-commit-id: 044923d57873f4e1a1eb4001395a83dbe97aabed --- src/Nazara/Renderer/Context.cpp | 10 +++------- src/Nazara/Renderer/OpenGL.cpp | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/Nazara/Renderer/Context.cpp b/src/Nazara/Renderer/Context.cpp index d4a988943..79e3dd0b8 100644 --- a/src/Nazara/Renderer/Context.cpp +++ b/src/Nazara/Renderer/Context.cpp @@ -167,7 +167,7 @@ bool NzContext::Create(const NzContextParameters& parameters) if (m_parameters.antialiasingLevel > 0) glEnable(GL_MULTISAMPLE); - if (NzOpenGL::IsSupported(nzOpenGLExtension_DebugOutput) && m_parameters.debugMode) + if (m_parameters.debugMode && NzOpenGL::IsSupported(nzOpenGLExtension_DebugOutput)) { glDebugMessageCallback(&DebugCallback, this); @@ -186,13 +186,9 @@ void NzContext::Destroy() if (m_impl) { NotifyDestroy(); - NzOpenGL::OnContextDestruction(this); - if (currentContext == this) - { - NzContextImpl::Desactivate(); - currentContext = nullptr; - } + NzOpenGL::OnContextDestruction(this); + SetActive(false); m_impl->Destroy(); delete m_impl; diff --git a/src/Nazara/Renderer/OpenGL.cpp b/src/Nazara/Renderer/OpenGL.cpp index e42b0134f..4555db513 100644 --- a/src/Nazara/Renderer/OpenGL.cpp +++ b/src/Nazara/Renderer/OpenGL.cpp @@ -71,7 +71,7 @@ namespace std::set s_openGLextensionSet; std::unordered_map s_contexts; - ContextStates* s_contextStates = nullptr; + thread_local ContextStates* s_contextStates = nullptr; const char* s_rendererName = nullptr; const char* s_vendorName = nullptr; bool s_initialized = false;