Ensure thread is stopped before deleting QThread

PR #18037.
This commit is contained in:
Vladimir Golovnev
2022-12-08 08:37:14 +03:00
committed by GitHub
parent 31c7306bd2
commit ac3ad17a9e
18 changed files with 134 additions and 76 deletions

View File

@@ -254,7 +254,7 @@ TorrentFilesWatcher *TorrentFilesWatcher::instance()
TorrentFilesWatcher::TorrentFilesWatcher(QObject *parent)
: QObject {parent}
, m_ioThread {new QThread(this)}
, m_ioThread {new QThread}
{
const auto *btSession = BitTorrent::Session::instance();
if (btSession->isRestored())
@@ -265,12 +265,6 @@ TorrentFilesWatcher::TorrentFilesWatcher(QObject *parent)
load();
}
TorrentFilesWatcher::~TorrentFilesWatcher()
{
m_ioThread->quit();
m_ioThread->wait();
}
void TorrentFilesWatcher::initWorker()
{
Q_ASSERT(!m_asyncWorker);
@@ -280,8 +274,8 @@ void TorrentFilesWatcher::initWorker()
connect(m_asyncWorker, &TorrentFilesWatcher::Worker::magnetFound, this, &TorrentFilesWatcher::onMagnetFound);
connect(m_asyncWorker, &TorrentFilesWatcher::Worker::torrentFound, this, &TorrentFilesWatcher::onTorrentFound);
m_asyncWorker->moveToThread(m_ioThread);
connect(m_ioThread, &QThread::finished, m_asyncWorker, &QObject::deleteLater);
m_asyncWorker->moveToThread(m_ioThread.get());
connect(m_ioThread.get(), &QThread::finished, m_asyncWorker, &QObject::deleteLater);
m_ioThread->start();
for (auto it = m_watchedFolders.cbegin(); it != m_watchedFolders.cend(); ++it)