[Toast] Uninitialize if possible
This commit is contained in:
parent
d3ca680e7a
commit
a3cb37f7e4
@ -12,6 +12,11 @@ namespace Components
|
|||||||
return Loader::Pregame;
|
return Loader::Pregame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Loader::IsPostgame()
|
||||||
|
{
|
||||||
|
return Loader::Postgame;
|
||||||
|
}
|
||||||
|
|
||||||
void Loader::Initialize()
|
void Loader::Initialize()
|
||||||
{
|
{
|
||||||
Loader::Pregame = true;
|
Loader::Pregame = true;
|
||||||
@ -93,7 +98,7 @@ namespace Components
|
|||||||
|
|
||||||
void Loader::Uninitialize()
|
void Loader::Uninitialize()
|
||||||
{
|
{
|
||||||
Loader::PreDestroy();
|
Loader::PreDestroyNoPostGame();
|
||||||
|
|
||||||
std::reverse(Loader::Components.begin(), Loader::Components.end());
|
std::reverse(Loader::Components.begin(), Loader::Components.end());
|
||||||
for (auto component : Loader::Components)
|
for (auto component : Loader::Components)
|
||||||
@ -119,14 +124,32 @@ namespace Components
|
|||||||
{
|
{
|
||||||
Loader::Postgame = true;
|
Loader::Postgame = true;
|
||||||
|
|
||||||
std::reverse(Loader::Components.begin(), Loader::Components.end());
|
auto components = Loader::Components;
|
||||||
for (auto component : Loader::Components)
|
|
||||||
|
std::reverse(components.begin(), components.end());
|
||||||
|
for (auto component : components)
|
||||||
{
|
{
|
||||||
component->preDestroy();
|
component->preDestroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Loader::PreDestroyNoPostGame()
|
||||||
|
{
|
||||||
|
if (!Loader::Postgame)
|
||||||
|
{
|
||||||
|
auto components = Loader::Components;
|
||||||
|
|
||||||
|
std::reverse(components.begin(), components.end());
|
||||||
|
for (auto component : components)
|
||||||
|
{
|
||||||
|
component->preDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
Loader::Postgame = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool Loader::PerformUnitTests()
|
bool Loader::PerformUnitTests()
|
||||||
{
|
{
|
||||||
bool result = true;
|
bool result = true;
|
||||||
|
@ -25,11 +25,13 @@ namespace Components
|
|||||||
static void Initialize();
|
static void Initialize();
|
||||||
static void Uninitialize();
|
static void Uninitialize();
|
||||||
static void PreDestroy();
|
static void PreDestroy();
|
||||||
|
static void PreDestroyNoPostGame();
|
||||||
static bool PerformUnitTests();
|
static bool PerformUnitTests();
|
||||||
static bool PerformingUnitTests();
|
static bool PerformingUnitTests();
|
||||||
static void Register(Component* component);
|
static void Register(Component* component);
|
||||||
|
|
||||||
static bool IsPregame();
|
static bool IsPregame();
|
||||||
|
static bool IsPostgame();
|
||||||
|
|
||||||
static Utils::Memory::Allocator* GetAlloctor();
|
static Utils::Memory::Allocator* GetAlloctor();
|
||||||
|
|
||||||
|
@ -174,13 +174,26 @@ namespace Components
|
|||||||
{
|
{
|
||||||
if (Dedicated::IsEnabled()) return;
|
if (Dedicated::IsEnabled()) return;
|
||||||
|
|
||||||
// Destroying that on the main thread deadlocks, for whatever reason.
|
// Destroying that on the main thread deadlocks.
|
||||||
// I did not write the library, so whatever.
|
// I did not write the library, so whatever.
|
||||||
std::thread([]()
|
// If we are not in the postgame state,
|
||||||
|
// we are not allowed to spawn threads,
|
||||||
|
// so just don't uninitialize the library.
|
||||||
|
// That means we did not uninitialize the game
|
||||||
|
// correctly anyways.
|
||||||
|
if (Loader::IsPostgame())
|
||||||
|
{
|
||||||
|
std::thread([]()
|
||||||
|
{
|
||||||
|
delete WinToastLib::WinToast::instance();
|
||||||
|
delete Toast::ToastHandler;
|
||||||
|
Toast::ToastHandler = nullptr;
|
||||||
|
}).join();
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
delete WinToastLib::WinToast::instance();
|
|
||||||
delete Toast::ToastHandler;
|
delete Toast::ToastHandler;
|
||||||
Toast::ToastHandler = nullptr;
|
Toast::ToastHandler = nullptr;
|
||||||
}).join();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user