aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/thread/TaskRunner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/thread/TaskRunner.cpp')
-rw-r--r--src/core/thread/TaskRunner.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/core/thread/TaskRunner.cpp b/src/core/thread/TaskRunner.cpp
index 86e06dfd..88913bc4 100644
--- a/src/core/thread/TaskRunner.cpp
+++ b/src/core/thread/TaskRunner.cpp
@@ -86,7 +86,11 @@ class TaskRunner::Impl : public QThread {
GpgFrontend::Thread::TaskRunner::TaskRunner() : p_(std::make_unique<Impl>()) {}
-GpgFrontend::Thread::TaskRunner::~TaskRunner() = default;
+GpgFrontend::Thread::TaskRunner::~TaskRunner() {
+ if (p_->isRunning()) {
+ Stop();
+ }
+}
void GpgFrontend::Thread::TaskRunner::PostTask(Task* task) {
p_->PostTask(task);
@@ -102,8 +106,13 @@ void TaskRunner::PostScheduleTask(Task* task, size_t seconds) {
void TaskRunner::Start() { p_->start(); }
-QThread* TaskRunner::GetThread() { return p_.get(); }
+void TaskRunner::Stop() {
+ p_->quit();
+ p_->wait();
+}
+
+auto TaskRunner::GetThread() -> QThread* { return p_.get(); }
-bool TaskRunner::IsRunning() { return p_->isRunning(); }
+auto TaskRunner::IsRunning() -> bool { return p_->isRunning(); }
} // namespace GpgFrontend::Thread