Module can now initialize optionnal classes

Former-commit-id: 899007b7879451d15d0808a03b8dfea0cd3413a4
This commit is contained in:
Lynix 2012-12-08 22:21:20 +01:00
parent e8842f1ba8
commit 8376fb38cf
4 changed files with 22 additions and 12 deletions

View File

@ -16,7 +16,7 @@ class NAZARA_API NzCore
NzCore() = delete; NzCore() = delete;
~NzCore() = delete; ~NzCore() = delete;
static bool Initialize(); static bool Initialize(bool initializeHardwareInfo = true, bool initializeTaskScheduler = true);
static bool IsInitialized(); static bool IsInitialized();

View File

@ -52,7 +52,7 @@ class NAZARA_API NzRenderer
static bool HasCapability(nzRendererCap capability); static bool HasCapability(nzRendererCap capability);
static bool Initialize(); static bool Initialize(bool initializeDebugDrawer = false);
static bool IsEnabled(nzRendererParameter parameter); static bool IsEnabled(nzRendererParameter parameter);
static bool IsInitialized(); static bool IsInitialized();

View File

@ -5,17 +5,28 @@
#include <Nazara/Core/Core.hpp> #include <Nazara/Core/Core.hpp>
#include <Nazara/Core/Config.hpp> #include <Nazara/Core/Config.hpp>
#include <Nazara/Core/Error.hpp> #include <Nazara/Core/Error.hpp>
#include <Nazara/Core/HardwareInfo.hpp>
#include <Nazara/Core/Log.hpp> #include <Nazara/Core/Log.hpp>
#include <Nazara/Core/TaskScheduler.hpp>
#include <Nazara/Core/Debug.hpp> #include <Nazara/Core/Debug.hpp>
bool NzCore::Initialize() bool NzCore::Initialize(bool initializeHardwareInfo, bool initializeTaskScheduler)
{ {
if (s_moduleReferenceCounter++ != 0) if (s_moduleReferenceCounter++ != 0)
return true; // Déjà initialisé return true; // Déjà initialisé
// Initialisation du module // 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. if (initializeHardwareInfo && !NzHardwareInfo::Initialize())
// Donc en prévision, tous les modules initialisent le noyau {
NazaraError("Failed to initialize hardware info");
return false;
}
if (initializeTaskScheduler && !NzTaskScheduler::Initialize())
{
NazaraError("Failed to initialize task scheduler");
return false;
}
NazaraNotice("Initialized: Core"); NazaraNotice("Initialized: Core");
@ -41,6 +52,9 @@ void NzCore::Uninitialize()
// Libération du module // Libération du module
s_moduleReferenceCounter = 0; s_moduleReferenceCounter = 0;
NzHardwareInfo::Uninitialize();
NzTaskScheduler::Uninitialize();
NazaraNotice("Uninitialized: Core"); NazaraNotice("Uninitialized: Core");
} }

View File

@ -397,7 +397,7 @@ bool NzRenderer::HasCapability(nzRendererCap capability)
return s_capabilities[capability]; return s_capabilities[capability];
} }
bool NzRenderer::Initialize() bool NzRenderer::Initialize(bool initializeDebugDrawer)
{ {
if (s_moduleReferenceCounter++ != 0) if (s_moduleReferenceCounter++ != 0)
return true; // Déjà initialisé return true; // Déjà initialisé
@ -497,10 +497,8 @@ bool NzRenderer::Initialize()
NzBuffer::SetBufferFunction(nzBufferStorage_Hardware, HardwareBufferFunction); NzBuffer::SetBufferFunction(nzBufferStorage_Hardware, HardwareBufferFunction);
#ifdef NAZARA_DEBUG if (initializeDebugDrawer && !NzDebugDrawer::Initialize())
if (!NzDebugDrawer::Initialize()) NazaraWarning("Failed to initialize debug drawer"); // Non-critique
NazaraWarning("Failed to initialize debug drawer");
#endif
// Loaders // Loaders
NzLoaders_Texture_Register(); NzLoaders_Texture_Register();
@ -1001,9 +999,7 @@ void NzRenderer::Uninitialize()
// Loaders // Loaders
NzLoaders_Texture_Unregister(); NzLoaders_Texture_Unregister();
#ifdef NAZARA_DEBUG
NzDebugDrawer::Uninitialize(); NzDebugDrawer::Uninitialize();
#endif
NzContext::EnsureContext(); NzContext::EnsureContext();