From 73812df269e13d844ec0db8d50d2274ea1cf5c78 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 15 Nov 2019 23:54:40 +0100 Subject: [PATCH] fix shutdown --- libnymea-core/logging/logengine.cpp | 9 ++++++--- libnymea-core/logging/logengine.h | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libnymea-core/logging/logengine.cpp b/libnymea-core/logging/logengine.cpp index 83855343..fd02919d 100644 --- a/libnymea-core/logging/logengine.cpp +++ b/libnymea-core/logging/logengine.cpp @@ -182,9 +182,10 @@ LogEngine::~LogEngine() { qWarning() << "Destroying logEngine"; // Process the job queue before allowing to shut down - while (!m_jobQueue.isEmpty() || !m_jobWatcher.isFinished()) { - qWarning() << "Waiting for job to finish..."; + while (m_currentJob) { + qWarning() << "Waiting for job to finish... (" << m_jobQueue.count() << "jobs left in queue)"; m_jobWatcher.waitForFinished(); + qApp->processEvents(); } qWarning() << "Done waiting"; qCDebug(dcLogEngine()) << "Closing Database"; @@ -534,7 +535,7 @@ void LogEngine::processQueue() return; } - if (!m_jobWatcher.isFinished()) { + if (m_currentJob) { return; } @@ -547,6 +548,7 @@ void LogEngine::processQueue() } DatabaseJob *job = m_jobQueue.takeFirst(); + m_currentJob = job; QFuture future = QtConcurrent::run([job](){ job->query().exec(); @@ -561,6 +563,7 @@ void LogEngine::handleJobFinished() DatabaseJob *job = m_jobWatcher.result(); job->finished(); job->deleteLater(); + m_currentJob = nullptr; processQueue(); } diff --git a/libnymea-core/logging/logengine.h b/libnymea-core/logging/logengine.h index 31b37d3f..f3f9e02d 100644 --- a/libnymea-core/logging/logengine.h +++ b/libnymea-core/logging/logengine.h @@ -96,6 +96,7 @@ private: bool m_dbMalformed = false; QList m_jobQueue; + DatabaseJob *m_currentJob = nullptr; QFutureWatcher m_jobWatcher; };