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();