From 8574b4f1bc4097452c863cd3e4ef0ae1078805ae Mon Sep 17 00:00:00 2001 From: James Turner <james@flightgear.org> Date: Tue, 28 Sep 2021 14:33:25 +0100 Subject: [PATCH] Launcher: improve local acft rescan behaviour --- src/GUI/LocalAircraftCache.cxx | 6 +++++- src/GUI/QtLauncher.cxx | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/GUI/LocalAircraftCache.cxx b/src/GUI/LocalAircraftCache.cxx index b1cd1f591..8d286f416 100644 --- a/src/GUI/LocalAircraftCache.cxx +++ b/src/GUI/LocalAircraftCache.cxx @@ -485,6 +485,10 @@ private: QStringList filters; filters << "*-set.xml"; Q_FOREACH(QFileInfo child, path.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { + if (m_done) { // thread termination bail-out + return; + } + QDir childDir(child.absoluteFilePath()); QMap<QString, AircraftItemPtr> baseAircraft; QList<AircraftItemPtr> variants; @@ -729,7 +733,7 @@ void LocalAircraftCache::abandonCurrentScan() &LocalAircraftCache::onScanFinished); d->m_scanThread->setDone(); - if (!d->m_scanThread->wait(2000)) { + if (!d->m_scanThread->wait(32000)) { qWarning() << Q_FUNC_INFO << "scan thread failed to terminate"; } d->m_scanThread.reset(); diff --git a/src/GUI/QtLauncher.cxx b/src/GUI/QtLauncher.cxx index cfc940228..c08f87483 100644 --- a/src/GUI/QtLauncher.cxx +++ b/src/GUI/QtLauncher.cxx @@ -698,10 +698,6 @@ bool runLauncherDialog() } int appResult = qApp->exec(); - if (appResult <= 0) { - return false; // quit - } - // avoid crashes / NavCache races if the loader is still running after // the launcher exits if (naturalEarthLoader) { @@ -716,6 +712,10 @@ bool runLauncherDialog() globals->clear_fg_scenery(); globals->get_locale()->clear(); + if (appResult <= 0) { + return false; // quit + } + return true; }