diff options
Diffstat (limited to 'src/core/thread/TaskRunner.cpp')
-rw-r--r-- | src/core/thread/TaskRunner.cpp | 15 |
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 |