diff --git a/Queue.h b/Queue.h index 449ff806..316084a9 100644 --- a/Queue.h +++ b/Queue.h @@ -98,17 +98,18 @@ namespace util { public: - MsgQueue (): m_Thread (std::bind (&MsgQueue::Run, this)) {}; + MsgQueue (): m_Thread (std::bind (&MsgQueue::Run, this)) , running(1) {}; void Stop() { - m_Thread.detach(); + running = 0; + m_Thread.join(); } private: void Run () { Msg * msg = nullptr; - while ((msg = Queue::GetNext ()) != nullptr) + while ((msg = Queue::GetNext ()) != nullptr && running) { msg->Process (); delete msg; @@ -117,6 +118,7 @@ namespace util private: std::thread m_Thread; + int running; }; } }