X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finternaltask.cpp;h=0f3cbc2ba603771d93df9e7a945e8fcc4de447c0;hb=d1f9551e05c9d341149eb490e05b1465d3d6b711;hp=68a5e25355f213223d8dc0c707ad6f84f95ede98;hpb=338eefb513953ae55e8e3614c009c242ba8ad74e;p=builder.git diff --git a/source/internaltask.cpp b/source/internaltask.cpp index 68a5e25..0f3cbc2 100644 --- a/source/internaltask.cpp +++ b/source/internaltask.cpp @@ -6,15 +6,27 @@ InternalTask::InternalTask(Worker *w): InternalTask::~InternalTask() { + worker->join(); delete worker; } -Task::Status InternalTask::check() +void InternalTask::start() { - return worker->get_status(); + prepare(); + worker->launch(); } +Task::Status InternalTask::check() +{ + 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; +}