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]() {
|
connect(watcher, &QFutureWatcher<void>::canceled, this, [this, project, watcher]() {
|
||||||
if (d->m_projectToIndexerCanceled.contains(project)) // Project not yet removed
|
if (d->m_projectToIndexerCanceled.contains(project)) // Project not yet removed
|
||||||
d->m_projectToIndexerCanceled.insert(project, true);
|
d->m_projectToIndexerCanceled.insert(project, true);
|
||||||
|
watcher->disconnect(this);
|
||||||
watcher->deleteLater();
|
watcher->deleteLater();
|
||||||
});
|
});
|
||||||
connect(watcher, &QFutureWatcher<void>::finished, this, [this, project, watcher]() {
|
connect(watcher, &QFutureWatcher<void>::finished, this, [this, project, watcher]() {
|
||||||
d->m_projectToIndexerCanceled.remove(project);
|
d->m_projectToIndexerCanceled.remove(project);
|
||||||
|
watcher->disconnect(this);
|
||||||
watcher->deleteLater();
|
watcher->deleteLater();
|
||||||
});
|
});
|
||||||
watcher->setFuture(future);
|
watcher->setFuture(future);
|
||||||
|
@@ -53,7 +53,7 @@ CppProjectUpdater::~CppProjectUpdater()
|
|||||||
void CppProjectUpdater::update(const ProjectExplorer::ProjectUpdateInfo &projectUpdateInfo)
|
void CppProjectUpdater::update(const ProjectExplorer::ProjectUpdateInfo &projectUpdateInfo)
|
||||||
{
|
{
|
||||||
// Stop previous update.
|
// Stop previous update.
|
||||||
cancelAndWaitForFinished();
|
cancel();
|
||||||
|
|
||||||
m_projectUpdateInfo = projectUpdateInfo;
|
m_projectUpdateInfo = projectUpdateInfo;
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ void CppProjectUpdater::onToolChainRemoved(ProjectExplorer::ToolChain *t)
|
|||||||
{
|
{
|
||||||
QTC_ASSERT(t, return);
|
QTC_ASSERT(t, return);
|
||||||
if (t == m_projectUpdateInfo.cToolChain || t == m_projectUpdateInfo.cxxToolChain)
|
if (t == m_projectUpdateInfo.cToolChain || t == m_projectUpdateInfo.cxxToolChain)
|
||||||
cancelAndWaitForFinished();
|
cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CppProjectUpdater::onProjectInfoGenerated()
|
void CppProjectUpdater::onProjectInfoGenerated()
|
||||||
|
Reference in New Issue
Block a user