diff options
author | saturneric <[email protected]> | 2023-12-15 13:14:17 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2023-12-15 13:14:17 +0000 |
commit | f9a49043c35e73fc2d4ffb3ed9b39c33849c43b3 (patch) | |
tree | 7e03b0b62119ff5d5dcd732ec1ccb7d2296df86d /src/core/thread/TaskRunner.cpp | |
parent | fix: slove some issues on memory and intilizations (diff) | |
download | GpgFrontend-f9a49043c35e73fc2d4ffb3ed9b39c33849c43b3.tar.gz GpgFrontend-f9a49043c35e73fc2d4ffb3ed9b39c33849c43b3.zip |
fix: slove threading and memory issues
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 |