From 0dffc1d1c2f9ac8f96b9bcefc1ebc25841e6d10f Mon Sep 17 00:00:00 2001 From: Gerhard Hoffmann Date: Tue, 6 Feb 2024 11:25:46 +0100 Subject: [PATCH] Create m_update-object inside of constructor of worker-class: this way the object belongs to the GUI-thread, and can be addressed via emit by the reporting thread. --- worker.cpp | 22 ++++++++++++---------- worker.h | 4 ---- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/worker.cpp b/worker.cpp index dcbfb68..64156dc 100644 --- a/worker.cpp +++ b/worker.cpp @@ -166,7 +166,13 @@ Worker::Worker(int customerNr, // TODO: turn object into singleton instance = this; m_lastFailedUpdateStep = UPDATE_STEP::NONE; - m_update = nullptr; + m_update = new Update(this, + QDir::cleanPath(m_workingDirectory + QDir::separator() + m_customerNrStr), + m_customerNrStr, + m_branchName, + m_pluginDir, + m_pluginName, + m_workingDirectory); this->setObjectName("worker-object"); QDir::setCurrent(m_workingDirectory); @@ -175,6 +181,10 @@ Worker::Worker(int customerNr, } Worker::~Worker() { + if (m_update != nullptr) { + delete m_update; + m_update = nullptr; + } } void Worker::displayProgressInMainWindow(int progress) { @@ -889,15 +899,7 @@ bool Worker::downloadFilesToPSAHardware() { QStringList lst = m_filesToDownload; ISMAS(lst) << (CONSOLE(lst) << UPDATE_STEP::FILES_TO_DOWNLOAD); - m_update = new Update(this, - QDir::cleanPath(m_workingDirectory + QDir::separator() + m_customerNrStr), - m_customerNrStr, - m_branchName, - m_pluginDir, - m_pluginName, - m_workingDirectory); - - if (m_update->doUpdate(m_displayIndex, m_filesToDownload)) { + if (m_update && m_update->doUpdate(m_displayIndex, m_filesToDownload)) { // prepared for use: at the moment, the dc-library does not work // as expected. diff --git a/worker.h b/worker.h index b622eb2..8f44493 100644 --- a/worker.h +++ b/worker.h @@ -249,10 +249,6 @@ class Worker : public QThread{ << UPDATE_STEP::SEND_LAST_VERSION)); } m_worker->stopProgressLoop(); - if (m_worker->m_update != nullptr) { - delete m_worker->m_update; - m_worker->m_update = nullptr; - } m_worker->m_updateProcessRunning = false; emit m_worker->enableExit(); emit m_worker->restartExitTimer();