From fc565530210b1f333a1e1fa94131553d42e9c266 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 31 Jul 2013 14:17:48 +0200 Subject: [PATCH] Better handling of module initialization Former-commit-id: 08d4b87a9b7cc10e672c23374306081fc9259de0 --- src/Nazara/Renderer/Renderer.cpp | 14 +++++++------- src/Nazara/Renderer/TextureSampler.cpp | 11 ++++++++--- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/Nazara/Renderer/Renderer.cpp b/src/Nazara/Renderer/Renderer.cpp index 7dd5d19c8..1674979fa 100644 --- a/src/Nazara/Renderer/Renderer.cpp +++ b/src/Nazara/Renderer/Renderer.cpp @@ -492,7 +492,9 @@ bool NzRenderer::Initialize() // Initialisation des dépendances if (!NzUtility::Initialize()) { - NazaraError("Failed to initialize utility module"); + NazaraError("Failed to initialize Utility module"); + Uninitialize(); + return false; } @@ -500,11 +502,11 @@ bool NzRenderer::Initialize() if (!NzOpenGL::Initialize()) { NazaraError("Failed to initialize OpenGL"); + Uninitialize(); + return false; } - NzContext::EnsureContext(); - NzBuffer::SetBufferFunction(nzBufferStorage_Hardware, HardwareBufferFunction); for (unsigned int i = 0; i <= nzMatrixType_Max; ++i) @@ -529,6 +531,8 @@ bool NzRenderer::Initialize() s_capabilities[nzRendererCap_TextureMulti] = true; // Natif depuis OpenGL 1.3 s_capabilities[nzRendererCap_TextureNPOT] = true; // Natif depuis OpenGL 2.0 + NzContext::EnsureContext(); + if (s_capabilities[nzRendererCap_AnisotropicFilter]) { GLfloat maxAnisotropy; @@ -635,8 +639,6 @@ bool NzRenderer::Initialize() // Loaders NzLoaders_Texture_Register(); - NazaraNotice("Initialized: Renderer module"); - return true; } @@ -1169,8 +1171,6 @@ void NzRenderer::Uninitialize() return; } - NzContext::EnsureContext(); - // Libération du module s_moduleReferenceCounter = 0; diff --git a/src/Nazara/Renderer/TextureSampler.cpp b/src/Nazara/Renderer/TextureSampler.cpp index e548b704a..32c6e1f13 100644 --- a/src/Nazara/Renderer/TextureSampler.cpp +++ b/src/Nazara/Renderer/TextureSampler.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -374,10 +375,14 @@ bool NzTextureSampler::Initialize() void NzTextureSampler::Uninitialize() { - for (const std::pair& pair : s_samplers) - glDeleteSamplers(1, &pair.second); + if (!s_samplers.empty()) + { + NzContext::EnsureContext(); + for (const std::pair& pair : s_samplers) + glDeleteSamplers(1, &pair.second); - s_samplers.clear(); + s_samplers.clear(); + } } nzUInt8 NzTextureSampler::s_defaultAnisotropyLevel = 1;