aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/thread/Task.cpp
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2023-10-18 14:45:33 +0000
committersaturneric <[email protected]>2023-10-18 14:45:33 +0000
commit70196cf01757824a578e4d9c49a210bf136de266 (patch)
treee058a59c6289b2a3872222c8822bae393cb7c213 /src/core/thread/Task.cpp
parentfix: solve build issues on macOS (diff)
downloadGpgFrontend-70196cf01757824a578e4d9c49a210bf136de266.tar.gz
GpgFrontend-70196cf01757824a578e4d9c49a210bf136de266.zip
feat: using pool for concurrent executions, not stable yet
Diffstat (limited to 'src/core/thread/Task.cpp')
-rw-r--r--src/core/thread/Task.cpp29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/core/thread/Task.cpp b/src/core/thread/Task.cpp
index 031dc4c7..bda64564 100644
--- a/src/core/thread/Task.cpp
+++ b/src/core/thread/Task.cpp
@@ -109,9 +109,7 @@ class Task::Impl : public QObject {
*
* @param finish_after_run
*/
- void HoldOnLifeCycle(bool hold_on) {
- this->run_callback_after_runnable_finished_ = !hold_on;
- }
+ void HoldOnLifeCycle(bool hold_on) { parent_->setAutoDelete(!hold_on); }
/**
* @brief
@@ -139,28 +137,29 @@ class Task::Impl : public QObject {
boost::stacktrace::to_string(boost::stacktrace::stacktrace()));
}
// raise signal to anounce after runnable returned
- if (run_callback_after_runnable_finished_)
- emit parent_->SignalTaskRunnableEnd(rtn_);
+ if (parent_->autoDelete()) slot_task_run_callback(rtn_);
}
private:
Task *const parent_;
const std::string uuid_;
const std::string name_;
- const bool sequency_ = true; ///< must run in the same thread
- TaskCallback callback_; ///<
- TaskRunnable runnable_; ///<
- bool run_callback_after_runnable_finished_ = true; ///<
- int rtn_ = 0; ///<
- QThread *callback_thread_ = nullptr; ///<
- DataObjectPtr data_object_ = nullptr; ///<
+ const bool sequency_ = true; ///< must run in the same thread
+ TaskCallback callback_; ///<
+ TaskRunnable runnable_; ///<
+ int rtn_ = 0; ///<
+ QThread *callback_thread_ = nullptr; ///<
+ DataObjectPtr data_object_ = nullptr; ///<
void init() {
connect(parent_, &Task::SignalRun, this, &Task::Impl::slot_run);
- // after runnable finished, running callback
- connect(parent_, &Task::SignalTaskRunnableEnd, this,
+ //
+ connect(parent_, &Task::SignalTaskShouldEnd, this,
&Impl::slot_task_run_callback);
+
+ //
+ connect(parent_, &Task::SignalTaskShouldEnd, parent_, &Task::deleteLater);
}
/**
@@ -253,7 +252,7 @@ void Task::SlotRun() { emit SignalRun(); }
void Task::Run() { p_->Run(); }
-void Task::run() { emit SignalRun(); }
+void Task::run() { this->SlotRun(); }
} // namespace GpgFrontend::Thread