aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/thread/TaskRunner.cpp
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2023-12-15 13:14:17 +0000
committersaturneric <[email protected]>2023-12-15 13:14:17 +0000
commitf9a49043c35e73fc2d4ffb3ed9b39c33849c43b3 (patch)
tree7e03b0b62119ff5d5dcd732ec1ccb7d2296df86d /src/core/thread/TaskRunner.cpp
parentfix: slove some issues on memory and intilizations (diff)
downloadGpgFrontend-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.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