Fixed calling Uninitialize when not Initialized

Former-commit-id: 1d0bb01f881be76e163a5ac27c91d7fb6a873bb7
This commit is contained in:
Lynix 2012-12-08 21:51:43 +01:00
parent cc132e271b
commit dc9f202155
7 changed files with 70 additions and 16 deletions

View File

@ -35,10 +35,17 @@ bool NzModuleName::IsInitialized()
void NzModuleName::Uninitialize() void NzModuleName::Uninitialize()
{ {
if (--s_moduleReferenceCounter != 0) if (s_moduleReferenceCounter != 1)
return; // Encore utilisé {
// Le module est soit encore utilisé, soit pas initialisé
if (s_moduleReferenceCounter > 1)
s_moduleReferenceCounter--;
return;
}
// Libération du module // Libération du module
s_moduleReferenceCounter = 0;
NazaraNotice("Uninitialized: ModuleName module"); NazaraNotice("Uninitialized: ModuleName module");

View File

@ -35,10 +35,17 @@ bool Nz3D::IsInitialized()
void Nz3D::Uninitialize() void Nz3D::Uninitialize()
{ {
if (--s_moduleReferenceCounter != 0) if (s_moduleReferenceCounter != 1)
return; // Encore utilisé {
// Le module est soit encore utilisé, soit pas initialisé
if (s_moduleReferenceCounter > 1)
s_moduleReferenceCounter--;
return;
}
// Libération du module // Libération du module
s_moduleReferenceCounter = 0;
NazaraNotice("Uninitialized: 3D module"); NazaraNotice("Uninitialized: 3D module");

View File

@ -253,13 +253,22 @@ void NzAudio::SetSpeedOfSound(float speed)
void NzAudio::Uninitialize() void NzAudio::Uninitialize()
{ {
if (--s_moduleReferenceCounter != 0) if (s_moduleReferenceCounter != 1)
return; // Encore utilisé {
// Le module est soit encore utilisé, soit pas initialisé
if (s_moduleReferenceCounter > 1)
s_moduleReferenceCounter--;
return;
}
// Libération du module
s_moduleReferenceCounter = 0;
// Loaders // Loaders
NzLoaders_sndfile_Unregister(); NzLoaders_sndfile_Unregister();
// Libération du module // Libération d'OpenAL
alcMakeContextCurrent(nullptr); alcMakeContextCurrent(nullptr);
alcDestroyContext(context); alcDestroyContext(context);

View File

@ -29,10 +29,18 @@ bool NzCore::IsInitialized()
void NzCore::Uninitialize() void NzCore::Uninitialize()
{ {
if (--s_moduleReferenceCounter != 0) if (s_moduleReferenceCounter != 1)
return; // Encore utilisé {
// Le module est soit encore utilisé, soit pas initialisé
if (s_moduleReferenceCounter > 1)
s_moduleReferenceCounter--;
return;
}
// Libération du module // Libération du module
s_moduleReferenceCounter = 0;
NazaraNotice("Uninitialized: Core"); NazaraNotice("Uninitialized: Core");
} }

View File

@ -35,10 +35,17 @@ bool NzNoise::IsInitialized()
void NzNoise::Uninitialize() void NzNoise::Uninitialize()
{ {
if (--s_moduleReferenceCounter != 0) if (s_moduleReferenceCounter != 1)
return; // Encore utilisé {
// Le module est soit encore utilisé, soit pas initialisé
if (s_moduleReferenceCounter > 1)
s_moduleReferenceCounter--;
return;
}
// Libération du module // Libération du module
s_moduleReferenceCounter = 0;
// Libération des dépendances // Libération des dépendances
NzCore::Uninitialize(); NzCore::Uninitialize();

View File

@ -986,8 +986,17 @@ void NzRenderer::SetViewport(const NzRectui& viewport)
void NzRenderer::Uninitialize() void NzRenderer::Uninitialize()
{ {
if (--s_moduleReferenceCounter != 0) if (s_moduleReferenceCounter != 1)
return; // Encore utilisé {
// Le module est soit encore utilisé, soit pas initialisé
if (s_moduleReferenceCounter > 1)
s_moduleReferenceCounter--;
return;
}
// Libération du module
s_moduleReferenceCounter = 0;
// Loaders // Loaders
NzLoaders_Texture_Unregister(); NzLoaders_Texture_Unregister();
@ -996,7 +1005,6 @@ void NzRenderer::Uninitialize()
NzDebugDrawer::Uninitialize(); NzDebugDrawer::Uninitialize();
#endif #endif
// Libération du module
NzContext::EnsureContext(); NzContext::EnsureContext();
// Libération des VAOs // Libération des VAOs

View File

@ -78,10 +78,18 @@ bool NzUtility::IsInitialized()
void NzUtility::Uninitialize() void NzUtility::Uninitialize()
{ {
if (--s_moduleReferenceCounter != 0) if (s_moduleReferenceCounter != 1)
return; // Encore utilisé {
// Le module est soit encore utilisé, soit pas initialisé
if (s_moduleReferenceCounter > 1)
s_moduleReferenceCounter--;
return;
}
// Libération du module // Libération du module
s_moduleReferenceCounter = 0;
NzLoaders_MD2_Unregister(); NzLoaders_MD2_Unregister();
NzLoaders_MD5Mesh_Unregister(); NzLoaders_MD5Mesh_Unregister();
NzLoaders_PCX_Unregister(); NzLoaders_PCX_Unregister();