forked from qt-creator/qt-creator
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:
@@ -127,11 +127,13 @@ ClangModelManagerSupport::ClangModelManagerSupport()
|
|||||||
|
|
||||||
// TODO: Enable this once we do document-level stuff with clangd (highlighting etc)
|
// TODO: Enable this once we do document-level stuff with clangd (highlighting etc)
|
||||||
// createClient(nullptr, {});
|
// createClient(nullptr, {});
|
||||||
|
m_generatorSynchronizer.setCancelOnWait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
ClangModelManagerSupport::~ClangModelManagerSupport()
|
ClangModelManagerSupport::~ClangModelManagerSupport()
|
||||||
{
|
{
|
||||||
QTC_CHECK(m_projectSettings.isEmpty());
|
QTC_CHECK(m_projectSettings.isEmpty());
|
||||||
|
m_generatorSynchronizer.waitForFinished();
|
||||||
m_instance = nullptr;
|
m_instance = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,8 +324,10 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
generatorWatcher->setFuture(Utils::runAsync(&Internal::generateCompilationDB, projectInfo,
|
auto future = Utils::runAsync(&Internal::generateCompilationDB, projectInfo,
|
||||||
CompilationDbPurpose::CodeModel));
|
CompilationDbPurpose::CodeModel);
|
||||||
|
generatorWatcher->setFuture(future);
|
||||||
|
m_generatorSynchronizer.addFuture(future);
|
||||||
}
|
}
|
||||||
|
|
||||||
ClangdClient *ClangModelManagerSupport::clientForProject(
|
ClangdClient *ClangModelManagerSupport::clientForProject(
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
#include <utils/id.h>
|
#include <utils/id.h>
|
||||||
|
|
||||||
|
#include <QFutureSynchronizer>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@@ -134,6 +135,7 @@ private:
|
|||||||
std::unique_ptr<CppTools::RefactoringEngineInterface> m_refactoringEngine;
|
std::unique_ptr<CppTools::RefactoringEngineInterface> m_refactoringEngine;
|
||||||
|
|
||||||
QHash<ProjectExplorer::Project *, ClangProjectSettings *> m_projectSettings;
|
QHash<ProjectExplorer::Project *, ClangProjectSettings *> m_projectSettings;
|
||||||
|
QFutureSynchronizer<void> m_generatorSynchronizer;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ClangModelManagerSupportProvider : public CppTools::ModelManagerSupportProvider
|
class ClangModelManagerSupportProvider : public CppTools::ModelManagerSupportProvider
|
||||||
|
|||||||
Reference in New Issue
Block a user