ClangModelManagerSupport: Add future synchronizer for started tasks

Task-number: QTCREATORBUG-25678
Change-Id: I0031f64b3d80cfcff6b9625bd2d57ea228382c80
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Jarek Kobus
2021-05-05 17:59:33 +02:00
parent 80f61a5db9
commit dc88306983
2 changed files with 8 additions and 2 deletions

View File

@@ -127,11 +127,13 @@ ClangModelManagerSupport::ClangModelManagerSupport()
// TODO: Enable this once we do document-level stuff with clangd (highlighting etc)
// createClient(nullptr, {});
m_generatorSynchronizer.setCancelOnWait(true);
}
ClangModelManagerSupport::~ClangModelManagerSupport()
{
QTC_CHECK(m_projectSettings.isEmpty());
m_generatorSynchronizer.waitForFinished();
m_instance = nullptr;
}
@@ -322,8 +324,10 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr
});
});
generatorWatcher->setFuture(Utils::runAsync(&Internal::generateCompilationDB, projectInfo,
CompilationDbPurpose::CodeModel));
auto future = Utils::runAsync(&Internal::generateCompilationDB, projectInfo,
CompilationDbPurpose::CodeModel);
generatorWatcher->setFuture(future);
m_generatorSynchronizer.addFuture(future);
}
ClangdClient *ClangModelManagerSupport::clientForProject(