X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finternaltask.cpp;h=fc929ce02b2f843c2bd6de87331bbe081f11017c;hb=1ed833343bc83b83c5f61cbfd74423bbba677a04;hp=5cbbd09ad0dc787e36cd37f3d729cc2e7c77fdbb;hpb=483add89e7f305642cc88a5f63a7741a15b6290e;p=builder.git diff --git a/source/internaltask.cpp b/source/internaltask.cpp index 5cbbd09..fc929ce 100644 --- a/source/internaltask.cpp +++ b/source/internaltask.cpp @@ -1,24 +1,19 @@ #include "internaltask.h" -InternalTask::InternalTask(Worker *w): - worker(w) -{ } - InternalTask::~InternalTask() { - worker->join(); - delete worker; + worker.join(); } void InternalTask::start() { prepare(); - worker->launch(); + worker.launch(); } Task::Status InternalTask::check() { - Status result = worker->get_status(); + Status result = worker.get_status(); if(result!=RUNNING) signal_finished.emit(result==SUCCESS); return result; @@ -32,6 +27,10 @@ Task::Status InternalTask::wait() } -InternalTask::Worker::Worker(): - status(Task::RUNNING) -{ } +void InternalTask::Worker::main() +{ + if(func()) + status = Task::SUCCESS; + else + status = Task::ERROR; +}