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()
{
if (--s_moduleReferenceCounter != 0)
return; // Encore utilisé
if (s_moduleReferenceCounter != 1)
{
// Le module est soit encore utilisé, soit pas initialisé
if (s_moduleReferenceCounter > 1)
s_moduleReferenceCounter--;
return;
}
// Libération du module
s_moduleReferenceCounter = 0;
NazaraNotice("Uninitialized: ModuleName module");

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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