diff --git a/WickedEngine/MainComponent.cpp b/WickedEngine/MainComponent.cpp index 881a88e15..9f2edf368 100644 --- a/WickedEngine/MainComponent.cpp +++ b/WickedEngine/MainComponent.cpp @@ -27,8 +27,10 @@ using namespace wiGraphics; MainComponent::~MainComponent() { - // This usually means appllication is terminating. Wait for GPU to finish rendering. + // This means application is terminating. Wait for GPU to finish rendering. wiRenderer::GetDevice()->WaitForGPU(); + + wiInitializer::CleanUp(); } void MainComponent::Initialize() diff --git a/WickedEngine/wiEmittedParticle.cpp b/WickedEngine/wiEmittedParticle.cpp index 5185ba47b..04c22af0f 100644 --- a/WickedEngine/wiEmittedParticle.cpp +++ b/WickedEngine/wiEmittedParticle.cpp @@ -746,20 +746,6 @@ void wiEmittedParticle::Initialize() wiBackLog::post("wiEmittedParticle Initialized"); } -void wiEmittedParticle::CleanUp() -{ - SAFE_DELETE(vertexShader); - for (int i = 0; i < ARRAYSIZE(pixelShader); ++i) - { - SAFE_DELETE(pixelShader[i]); - } - SAFE_DELETE(emitCS); - SAFE_DELETE(emitCS_FROMMESH); - SAFE_DELETE(simulateCS); - SAFE_DELETE(simulateCS_SORTING); - SAFE_DELETE(simulateCS_DEPTHCOLLISIONS); - SAFE_DELETE(simulateCS_SORTING_DEPTHCOLLISIONS); -} void wiEmittedParticle::Serialize(wiArchive& archive, uint32_t seed) diff --git a/WickedEngine/wiEmittedParticle.h b/WickedEngine/wiEmittedParticle.h index 6c2b36c93..9e2f5a708 100644 --- a/WickedEngine/wiEmittedParticle.h +++ b/WickedEngine/wiEmittedParticle.h @@ -118,7 +118,6 @@ public: static void LoadShaders(); static void Initialize(); - static void CleanUp(); }; } diff --git a/WickedEngine/wiFont.cpp b/WickedEngine/wiFont.cpp index 70b0920fe..5165b8d88 100644 --- a/WickedEngine/wiFont.cpp +++ b/WickedEngine/wiFont.cpp @@ -292,6 +292,10 @@ void wiFont::Initialize() } void wiFont::CleanUp() { + for (auto& x : fontStyles) + { + SAFE_DELETE(x); + } fontStyles.clear(); } diff --git a/WickedEngine/wiHairParticle.cpp b/WickedEngine/wiHairParticle.cpp index 502464c30..2629a3d21 100644 --- a/WickedEngine/wiHairParticle.cpp +++ b/WickedEngine/wiHairParticle.cpp @@ -298,17 +298,6 @@ void wiHairParticle::LoadShaders() cs_simulate = static_cast(wiResourceManager::GetShaderManager().add(path + "hairparticle_simulateCS.cso", wiResourceManager::COMPUTESHADER)); } -void wiHairParticle::CleanUp() -{ - SAFE_DELETE(vs); - for (int i = 0; i < RENDERPASS_COUNT; ++i) - { - SAFE_DELETE(ps[i]); - } - - SAFE_DELETE(ps_simplest); - SAFE_DELETE(cs_simulate); -} void wiHairParticle::Initialize() { diff --git a/WickedEngine/wiHairParticle.h b/WickedEngine/wiHairParticle.h index b5321855b..b45f30c1e 100644 --- a/WickedEngine/wiHairParticle.h +++ b/WickedEngine/wiHairParticle.h @@ -51,7 +51,6 @@ public: static void LoadShaders(); static void Initialize(); - static void CleanUp(); }; } diff --git a/WickedEngine/wiInitializer.cpp b/WickedEngine/wiInitializer.cpp index 0b1451da7..72173aab1 100644 --- a/WickedEngine/wiInitializer.cpp +++ b/WickedEngine/wiInitializer.cpp @@ -1,11 +1,8 @@ #include "wiInitializer.h" #include "WickedEngine.h" -#include #include -using namespace std; - namespace wiInitializer { bool initializationStarted = false; @@ -20,7 +17,10 @@ namespace wiInitializer { initializationStarted = true; - wiBackLog::post("\n[wiInitializer] Initializing Wicked Engine, please wait...\n"); + std::stringstream ss; + ss << std::endl << "[wiInitializer] Initializing Wicked Engine, please wait..." << std::endl; + ss << "Version: " << wiVersion::GetVersionString() << std::endl; + wiBackLog::post(ss.str().c_str()); wiJobSystem::Initialize(); @@ -44,4 +44,13 @@ namespace wiInitializer { return initializationStarted && !wiJobSystem::IsBusy(ctx); } + + void CleanUp() + { + wiFont::CleanUp(); + wiRenderer::CleanUp(); + wiAudio::CleanUp(); + wiNetwork::CleanUp(); + wiPhysicsEngine::CleanUp(); + } } \ No newline at end of file diff --git a/WickedEngine/wiInitializer.h b/WickedEngine/wiInitializer.h index 5e4f2a4c6..413991665 100644 --- a/WickedEngine/wiInitializer.h +++ b/WickedEngine/wiInitializer.h @@ -9,6 +9,8 @@ namespace wiInitializer void InitializeComponentsAsync(); // Check if systems have been initialized or not bool IsInitializeFinished(); + + void CleanUp(); } diff --git a/WickedEngine/wiRenderer.cpp b/WickedEngine/wiRenderer.cpp index 53ec023a1..b6c0bbdb2 100644 --- a/WickedEngine/wiRenderer.cpp +++ b/WickedEngine/wiRenderer.cpp @@ -511,8 +511,6 @@ void Initialize() } void CleanUp() { - wiHairParticle::CleanUp(); - wiEmittedParticle::CleanUp(); wiCube::CleanUp(); for (int i = 0; i < TEXTYPE_LAST; ++i) @@ -520,7 +518,8 @@ void CleanUp() SAFE_DELETE(textures[i]); } - SAFE_DELETE(graphicsDevice); + // TODO: Currently it is not safe to ever delete graphics device, because of resource destructors might be referencing it! + //SAFE_DELETE(graphicsDevice); } void ClearWorld() { diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index f49022e20..141f23345 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates const int minor = 30; // minor bug fixes, alterations, refactors, updates - const int revision = 6; + const int revision = 7; long GetVersion()