X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finternaltask.cpp;h=5810be12670b7cecae652ae375666926fcd45e31;hb=451ef4f33b5a57dcb56bd7cb671bed359ac86247;hp=b8cbf115a460183189f87643da430806f9076a9a;hpb=53a2b5e5fb7dc3905b41a6231f03bac0c87a4133;p=builder.git diff --git a/source/internaltask.cpp b/source/internaltask.cpp index b8cbf11..5810be1 100644 --- a/source/internaltask.cpp +++ b/source/internaltask.cpp @@ -1,9 +1,5 @@ #include "internaltask.h" -InternalTask::InternalTask(Worker *w): - worker(w) -{ } - InternalTask::~InternalTask() { worker->join(); @@ -12,17 +8,21 @@ InternalTask::~InternalTask() void InternalTask::start() { + prepare(); worker->launch(); } 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; } - -InternalTask::Worker::Worker(): - status(RUNNING) -{ } +Task::Status InternalTask::wait() +{ + Status result; + while((result = check())==RUNNING) ; + return result; +}