forked from qt-creator/qt-creator
CppTools: Fix UI freeze on project update
Do not wait for the previous update to finish before starting the next
update.
Amends: 6d7e5eb8d1
Change-Id: Ic8d43b56949cbf024832afc85e54a31db29b11ac
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -1089,10 +1089,12 @@ void CppModelManager::watchForCanceledProjectIndexer(const QFuture<void> &future
|
||||
connect(watcher, &QFutureWatcher<void>::canceled, this, [this, project, watcher]() {
|
||||
if (d->m_projectToIndexerCanceled.contains(project)) // Project not yet removed
|
||||
d->m_projectToIndexerCanceled.insert(project, true);
|
||||
watcher->disconnect(this);
|
||||
watcher->deleteLater();
|
||||
});
|
||||
connect(watcher, &QFutureWatcher<void>::finished, this, [this, project, watcher]() {
|
||||
d->m_projectToIndexerCanceled.remove(project);
|
||||
watcher->disconnect(this);
|
||||
watcher->deleteLater();
|
||||
});
|
||||
watcher->setFuture(future);
|
||||
|
@@ -53,7 +53,7 @@ CppProjectUpdater::~CppProjectUpdater()
|
||||
void CppProjectUpdater::update(const ProjectExplorer::ProjectUpdateInfo &projectUpdateInfo)
|
||||
{
|
||||
// Stop previous update.
|
||||
cancelAndWaitForFinished();
|
||||
cancel();
|
||||
|
||||
m_projectUpdateInfo = projectUpdateInfo;
|
||||
|
||||
@@ -93,7 +93,7 @@ void CppProjectUpdater::onToolChainRemoved(ProjectExplorer::ToolChain *t)
|
||||
{
|
||||
QTC_ASSERT(t, return);
|
||||
if (t == m_projectUpdateInfo.cToolChain || t == m_projectUpdateInfo.cxxToolChain)
|
||||
cancelAndWaitForFinished();
|
||||
cancel();
|
||||
}
|
||||
|
||||
void CppProjectUpdater::onProjectInfoGenerated()
|
||||
|
Reference in New Issue
Block a user