summaryrefslogtreecommitdiff
path: root/src/threadengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/threadengine.cpp')
-rw-r--r--src/threadengine.cpp33
1 files changed, 6 insertions, 27 deletions
diff --git a/src/threadengine.cpp b/src/threadengine.cpp
index c2aa3da20..e11b065ea 100644
--- a/src/threadengine.cpp
+++ b/src/threadengine.cpp
@@ -1,46 +1,22 @@
#include "services.h"
-ThreadEngine threadEngine;
-
-/** Check for finished threads
- */
-void ThreadEngine::Process()
-{
- for (unsigned i = this->threads.size(); i > 0; --i)
- {
- Thread *t = this->threads[i - 1];
-
- if (t->GetExitState())
- {
- t->Join();
- delete t;
- }
- }
-}
-
/** Threads constructor
*/
Thread::Thread() : exit(false)
{
- threadEngine.threads.push_back(this);
}
/** Threads destructor
*/
Thread::~Thread()
{
- std::vector<Thread *>::iterator it = std::find(threadEngine.threads.begin(), threadEngine.threads.end(), this);
-
- if (it != threadEngine.threads.end())
- {
- threadEngine.threads.erase(it);
- }
}
/** Sets the exit state as true informing the thread we want it to shut down
*/
void Thread::SetExitState()
{
+ this->Notify();
exit = true;
}
@@ -52,8 +28,11 @@ bool Thread::GetExitState() const
return exit;
}
-/** Called to run the thread, should be overloaded
+/** Called when this thread should be joined to
*/
-void Thread::Run()
+void Thread::OnNotify()
{
+ this->Join();
+ this->SetFlag(SF_DEAD);
}
+