From 8376fb38cfed9deee1d48cd1d2c39d9008149ace Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 8 Dec 2012 22:21:20 +0100 Subject: [PATCH] Module can now initialize optionnal classes Former-commit-id: 899007b7879451d15d0808a03b8dfea0cd3413a4 --- include/Nazara/Core/Core.hpp | 2 +- include/Nazara/Renderer/Renderer.hpp | 2 +- src/Nazara/Core/Core.cpp | 20 +++++++++++++++++--- src/Nazara/Renderer/Renderer.cpp | 10 +++------- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/include/Nazara/Core/Core.hpp b/include/Nazara/Core/Core.hpp index 31b2c02f6..7ba3e59fe 100644 --- a/include/Nazara/Core/Core.hpp +++ b/include/Nazara/Core/Core.hpp @@ -16,7 +16,7 @@ class NAZARA_API NzCore NzCore() = delete; ~NzCore() = delete; - static bool Initialize(); + static bool Initialize(bool initializeHardwareInfo = true, bool initializeTaskScheduler = true); static bool IsInitialized(); diff --git a/include/Nazara/Renderer/Renderer.hpp b/include/Nazara/Renderer/Renderer.hpp index 425c1fc28..5d08b3935 100644 --- a/include/Nazara/Renderer/Renderer.hpp +++ b/include/Nazara/Renderer/Renderer.hpp @@ -52,7 +52,7 @@ class NAZARA_API NzRenderer static bool HasCapability(nzRendererCap capability); - static bool Initialize(); + static bool Initialize(bool initializeDebugDrawer = false); static bool IsEnabled(nzRendererParameter parameter); static bool IsInitialized(); diff --git a/src/Nazara/Core/Core.cpp b/src/Nazara/Core/Core.cpp index cdac6d7a4..b91b33a22 100644 --- a/src/Nazara/Core/Core.cpp +++ b/src/Nazara/Core/Core.cpp @@ -5,17 +5,28 @@ #include #include #include +#include #include +#include #include -bool NzCore::Initialize() +bool NzCore::Initialize(bool initializeHardwareInfo, bool initializeTaskScheduler) { if (s_moduleReferenceCounter++ != 0) return true; // Déjà initialisé // Initialisation du module - // Le noyau de Nazara n'a pour l'instant aucun besoin d'initialisation, mais dans le futur il est très probable que ce soit le cas. - // Donc en prévision, tous les modules initialisent le noyau + if (initializeHardwareInfo && !NzHardwareInfo::Initialize()) + { + NazaraError("Failed to initialize hardware info"); + return false; + } + + if (initializeTaskScheduler && !NzTaskScheduler::Initialize()) + { + NazaraError("Failed to initialize task scheduler"); + return false; + } NazaraNotice("Initialized: Core"); @@ -41,6 +52,9 @@ void NzCore::Uninitialize() // Libération du module s_moduleReferenceCounter = 0; + NzHardwareInfo::Uninitialize(); + NzTaskScheduler::Uninitialize(); + NazaraNotice("Uninitialized: Core"); } diff --git a/src/Nazara/Renderer/Renderer.cpp b/src/Nazara/Renderer/Renderer.cpp index 6c3f9d705..cd51a416d 100644 --- a/src/Nazara/Renderer/Renderer.cpp +++ b/src/Nazara/Renderer/Renderer.cpp @@ -397,7 +397,7 @@ bool NzRenderer::HasCapability(nzRendererCap capability) return s_capabilities[capability]; } -bool NzRenderer::Initialize() +bool NzRenderer::Initialize(bool initializeDebugDrawer) { if (s_moduleReferenceCounter++ != 0) return true; // Déjà initialisé @@ -497,10 +497,8 @@ bool NzRenderer::Initialize() NzBuffer::SetBufferFunction(nzBufferStorage_Hardware, HardwareBufferFunction); - #ifdef NAZARA_DEBUG - if (!NzDebugDrawer::Initialize()) - NazaraWarning("Failed to initialize debug drawer"); - #endif + if (initializeDebugDrawer && !NzDebugDrawer::Initialize()) + NazaraWarning("Failed to initialize debug drawer"); // Non-critique // Loaders NzLoaders_Texture_Register(); @@ -1001,9 +999,7 @@ void NzRenderer::Uninitialize() // Loaders NzLoaders_Texture_Unregister(); - #ifdef NAZARA_DEBUG NzDebugDrawer::Uninitialize(); - #endif NzContext::EnsureContext();