Fix crash in the unit tests

fixes #7769
This commit is contained in:
Gunnar Beutner 2014-12-04 21:45:15 +01:00
parent a134882567
commit 7d93788650
4 changed files with 21 additions and 12 deletions

View File

@ -108,7 +108,7 @@ void Application::Exit(int rc)
logger->Flush(); logger->Flush();
} }
Timer::Uninitialize(); UninitializeBase();
#ifdef _DEBUG #ifdef _DEBUG
exit(rc); exit(rc);
@ -149,6 +149,18 @@ void Application::InitializeBase(void)
#endif /* _WIN32 */ #endif /* _WIN32 */
Utility::ExecuteDeferredInitializers(); Utility::ExecuteDeferredInitializers();
/* make sure the thread pool gets initialized */
GetTP();
Timer::Initialize();
}
void Application::UninitializeBase(void)
{
Timer::Uninitialize();
GetTP().Stop();
} }
/** /**
@ -316,12 +328,7 @@ mainloop:
DynamicObject::StopObjects(); DynamicObject::StopObjects();
Application::GetInstance()->OnShutdown(); Application::GetInstance()->OnShutdown();
#ifdef _DEBUG UninitializeBase();
GetTP().Stop();
m_ShuttingDown = false;
Timer::Uninitialize();
#endif /* _DEBUG */
} }
void Application::OnShutdown(void) void Application::OnShutdown(void)

View File

@ -43,6 +43,7 @@ public:
~Application(void); ~Application(void);
static void InitializeBase(void); static void InitializeBase(void);
static void UninitializeBase(void);
static Application::Ptr GetInstance(void); static Application::Ptr GetInstance(void);

View File

@ -52,9 +52,6 @@ public:
boost::signals2::signal<void(const Timer::Ptr&)> OnTimerExpired; boost::signals2::signal<void(const Timer::Ptr&)> OnTimerExpired;
static void Initialize(void);
static void Uninitialize(void);
class Holder { class Holder {
public: public:
Holder(Timer *timer) Holder(Timer *timer)
@ -88,6 +85,11 @@ private:
void Call(); void Call();
static void TimerThreadProc(void); static void TimerThreadProc(void);
static void Initialize(void);
static void Uninitialize(void);
friend class Application;
}; };
} }

View File

@ -31,12 +31,11 @@ struct InitLibBase
InitLibBase(void) InitLibBase(void)
{ {
Application::InitializeBase(); Application::InitializeBase();
Timer::Initialize();
} }
~InitLibBase(void) ~InitLibBase(void)
{ {
Timer::Uninitialize(); Application::UninitializeBase();
} }
}; };