diff options
author | David Schulz <david.schulz@qt.io> | 2018-02-21 08:41:36 +0100 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2018-02-21 07:58:10 +0000 |
commit | 63cc5491f577683791cc0959885b4019a1b99ef6 (patch) | |
tree | e5de48bd3ef8c2288a787278c125d1f9a52bf960 /src/plugins/coreplugin/helpmanager.cpp | |
parent | 075d636655cc50668601c27e48bb30657625cb35 (diff) | |
download | qt-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.cpp | 17 |
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() |