Index: source/main.cpp =================================================================== --- source/main.cpp +++ source/main.cpp @@ -708,7 +708,7 @@ ATLAS_RunIfOnCmdLine(args, true); #endif - Threading::TaskManager::Instance().ClearQueue(); + Threading::TaskManager::Shutdown(); CXeromyces::Terminate(); } Index: source/ps/TaskManager.h =================================================================== --- source/ps/TaskManager.h +++ source/ps/TaskManager.h @@ -48,8 +48,10 @@ TaskManager& operator=(TaskManager&&) = delete; static void Initialise(); + static void Shutdown(); static TaskManager& Instance(); + /** * Clears all tasks from the queue. This blocks on started tasks. */ Index: source/ps/TaskManager.cpp =================================================================== --- source/ps/TaskManager.cpp +++ source/ps/TaskManager.cpp @@ -199,6 +199,7 @@ void TaskManager::DoPushTask(std::function&& task, TaskPriority priority) { + printf("Pushed task\n"); m->PushTask(std::move(task), priority); } @@ -242,6 +243,11 @@ g_TaskManager = std::make_unique(); } +void TaskManager::Shutdown() +{ + g_TaskManager.reset(); +} + TaskManager& TaskManager::Instance() { ENSURE(g_TaskManager); Index: source/test_setup.cpp =================================================================== --- source/test_setup.cpp +++ source/test_setup.cpp @@ -92,7 +92,7 @@ virtual bool tearDownWorld() { - Threading::TaskManager::Instance().ClearQueue(); + Threading::TaskManager::Shutdown(); g_ScriptContext.reset(); SAFE_DELETE(m_ScriptEngine); g_Profiler2.Shutdown();