gui: fix QThread crash in Lib9pStreamer::onWorkerFinished

QThread::~QThread() aborts if the thread is still running. The previous
code called delete unconditionally after a 100ms wait timeout. Now we
follow the same pattern as stopWorker(): check if wait() succeeded,
and if not, abandon the thread safely via deleteLater.
This commit is contained in:
Levi Neely 2026-10-06 11:29:26 +02:00
parent 3838078394
commit 3655b16b4b
1 changed files with 10 additions and 3 deletions

View File

@ -154,9 +154,16 @@ void Lib9pStreamer::onWorkerFinished(bool success, const QString &error)
// Clean up the worker
if (m_workerThread) {
m_workerThread->quit();
m_workerThread->wait(100);
delete m_worker;
delete m_workerThread;
if (m_workerThread->wait(500)) {
// Thread exited cleanly
delete m_worker;
delete m_workerThread;
} else {
// Thread still running — abandon safely
disconnect(m_worker, nullptr, this, nullptr);
connect(m_workerThread, &QThread::finished, m_worker, &QObject::deleteLater);
connect(m_workerThread, &QThread::finished, m_workerThread, &QObject::deleteLater);
}
m_worker = nullptr;
m_workerThread = nullptr;
}