summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin/helpmanager.cpp
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2018-02-21 08:41:36 +0100
committerChristian Stenger <christian.stenger@qt.io>2018-02-21 07:58:10 +0000
commit63cc5491f577683791cc0959885b4019a1b99ef6 (patch)
treee5de48bd3ef8c2288a787278c125d1f9a52bf960 /src/plugins/coreplugin/helpmanager.cpp
parent075d636655cc50668601c27e48bb30657625cb35 (diff)
downloadqt-creator-63cc5491f577683791cc0959885b4019a1b99ef6.tar.gz
Core: cancel async documentation registration on shutdown
Change-Id: I46bc81cf6326e964309996e0e205fff011f596e7 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/coreplugin/helpmanager.cpp')
-rw-r--r--src/plugins/coreplugin/helpmanager.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/plugins/coreplugin/helpmanager.cpp b/src/plugins/coreplugin/helpmanager.cpp
index 4c8c014249..76d5aa787f 100644
--- a/src/plugins/coreplugin/helpmanager.cpp
+++ b/src/plugins/coreplugin/helpmanager.cpp
@@ -79,7 +79,8 @@ struct HelpManagerPrivate
QSet<QString> m_userRegisteredFiles;
- QMutex helpengineMutex;
+ QMutex m_helpengineMutex;
+ QFuture<bool> m_registerFuture;
};
static HelpManager *m_instance = nullptr;
@@ -149,7 +150,7 @@ void HelpManager::registerDocumentation(const QStringList &files)
void HelpManager::registerDocumentationNow(QFutureInterface<bool> &futureInterface,
const QStringList &files)
{
- QMutexLocker locker(&d->helpengineMutex);
+ QMutexLocker locker(&d->m_helpengineMutex);
futureInterface.setProgressRange(0, files.count());
futureInterface.setProgressValue(0);
@@ -157,6 +158,8 @@ void HelpManager::registerDocumentationNow(QFutureInterface<bool> &futureInterfa
QHelpEngineCore helpEngine(collectionFilePath());
bool docsChanged = false;
for (const QString &file : files) {
+ if (futureInterface.isCanceled())
+ break;
futureInterface.setProgressValue(futureInterface.progressValue() + 1);
const QString &nameSpace = helpEngine.namespaceName(file);
if (nameSpace.isEmpty())
@@ -193,7 +196,7 @@ void HelpManager::unregisterDocumentation(const QStringList &nameSpaces)
return;
}
- QMutexLocker locker(&d->helpengineMutex);
+ QMutexLocker locker(&d->m_helpengineMutex);
bool docsChanged = false;
for (const QString &nameSpace : nameSpaces) {
const QString filePath = d->m_helpEngine->documentationFileName(nameSpace);
@@ -396,6 +399,14 @@ void HelpManager::addUserDefinedFilter(const QString &filter, const QStringList
emit m_instance->collectionFileChanged();
}
+void HelpManager::aboutToShutdown()
+{
+ if (d && d->m_registerFuture.isRunning()) {
+ d->m_registerFuture.cancel();
+ d->m_registerFuture.waitForFinished();
+ }
+}
+
// -- private
void HelpManager::setupHelpManager()