Skip to content

Commit 765eacd

Browse files
committed
Add a synchrony Worker destructor that avoids that workers are killed active during application exit.
This happens because the deleteLater() signal might not reach the thread early enough before the event cue is destroyed.
1 parent 5ffd4c4 commit 765eacd

2 files changed

Lines changed: 9 additions & 0 deletions

File tree

src/analyzer/trackanalysisscheduler.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ TrackAnalysisScheduler::TrackAnalysisScheduler(
9292

9393
TrackAnalysisScheduler::~TrackAnalysisScheduler() {
9494
kLogger.debug() << "Destroying";
95+
// here the Worker in m_workers after the associated thread is finished
9596
}
9697

9798
void TrackAnalysisScheduler::emitProgressOrFinished() {

src/analyzer/trackanalysisscheduler.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,14 @@ class TrackAnalysisScheduler : public QObject {
8787
Worker(const Worker&) = delete;
8888
Worker(Worker&&) = default;
8989

90+
~Worker() {
91+
if (m_pThread) {
92+
m_pThread->stop();
93+
m_pThread->wait();
94+
delete m_pThread.release();
95+
}
96+
}
97+
9098
bool hasThread() const {
9199
return static_cast<bool>(m_pThread);
92100
}

0 commit comments

Comments
 (0)