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:
parent
3838078394
commit
3655b16b4b
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue