X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finternaltask.cpp;h=bcea59156be3b6ae9b70a2dad96a72bf6bc31ab7;hb=740d7cdd71fc2f068e44bfc6c8cc7e9565de16f6;hp=37c9b75de91a9fb5962cb58584749245308cc9a0;hpb=b5ccba555f4985233532041c34e28d71dd58933f;p=builder.git diff --git a/source/internaltask.cpp b/source/internaltask.cpp index 37c9b75..bcea591 100644 --- a/source/internaltask.cpp +++ b/source/internaltask.cpp @@ -6,6 +6,7 @@ InternalTask::InternalTask(Worker *w): InternalTask::~InternalTask() { + worker->join(); delete worker; } @@ -16,9 +17,17 @@ void InternalTask::start() Task::Status InternalTask::check() { - if(worker->get_status()!=RUNNING) - signal_finished.emit(worker->get_status()==SUCCESS); - return worker->get_status(); + Status result = worker->get_status(); + if(result!=RUNNING) + signal_finished.emit(result==SUCCESS); + return result; +} + +Task::Status InternalTask::wait() +{ + Status result; + while((result = check())==RUNNING) ; + return result; }