diff --git a/include/Nazara/Core/HardwareInfo.hpp b/include/Nazara/Core/HardwareInfo.hpp index 234ceba5b..76683ad2e 100644 --- a/include/Nazara/Core/HardwareInfo.hpp +++ b/include/Nazara/Core/HardwareInfo.hpp @@ -22,6 +22,9 @@ class NAZARA_API NzHardwareInfo static bool HasCapability(nzProcessorCap capability); static bool Initialize(); + + static bool IsInitialized(); + static void Uninitialize(); }; diff --git a/src/Nazara/Core/HardwareInfo.cpp b/src/Nazara/Core/HardwareInfo.cpp index 7fb3fa917..ee74a1e86 100644 --- a/src/Nazara/Core/HardwareInfo.cpp +++ b/src/Nazara/Core/HardwareInfo.cpp @@ -20,6 +20,7 @@ namespace { nzProcessorVendor s_vendorEnum = nzProcessorVendor_Unknown; bool s_capabilities[nzProcessorCap_Max+1] = {false}; + bool s_initialized = false; char s_brandString[48] = "Not initialized"; char s_vendor[12] = {'C', 'P', 'U', 'i', 's', 'U', 'n', 'k', 'n', 'o', 'w', 'n'}; @@ -84,9 +85,14 @@ bool NzHardwareInfo::HasCapability(nzProcessorCap capability) bool NzHardwareInfo::Initialize() { + if (s_initialized) + return true; + if (!NzHardwareInfoImpl::IsCpuidSupported()) return false; + s_initialized = true; + nzUInt32 result[4]; NzHardwareInfoImpl::Cpuid(0, result); @@ -165,7 +171,13 @@ bool NzHardwareInfo::Initialize() return true; } +bool NzHardwareInfo::IsInitialized() +{ + return s_initialized; +} + void NzHardwareInfo::Uninitialize() { // Rien à faire + s_initialized = false; }