summaryrefslogtreecommitdiff
path: root/src/plugins/qbsprojectmanager
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-08-30 10:53:50 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-09-03 15:34:44 +0000
commit39d7aa7f70a30a53c55393298a16b61c6f5b1667 (patch)
treef093e9927cf8862101085b703a8cf95fee47ebcf /src/plugins/qbsprojectmanager
parent3d9974db95a78d3a023abf37d4c1b180430c6fb7 (diff)
downloadqt-creator-39d7aa7f70a30a53c55393298a16b61c6f5b1667.tar.gz
QbsProjectManager: Only hold one build graph per project
Keeping the build graphs of all enabled targets in memory does not scale. Task-number: QTCREATORBUG-20622 Change-Id: Iab711e7e789db51a5ee13aa9bf3c9fbb2e08aa89 Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/qbsprojectmanager')
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index 22fcfc9dfa..c1645ea28e 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -546,11 +546,19 @@ void QbsProject::handleRuleExecutionDone()
void QbsProject::changeActiveTarget(Target *t)
{
- if (t) {
- m_qbsProject = m_qbsProjects.value(t);
- if (t->isActive())
- delayParsing();
+ bool targetFound = false;
+ for (auto it = m_qbsProjects.begin(); it != m_qbsProjects.end(); ++it) {
+ qbs::Project &qbsProjectForTarget = it.value();
+ if (it.key() == t) {
+ m_qbsProject = qbsProjectForTarget;
+ targetFound = true;
+ } else if (qbsProjectForTarget.isValid() && !BuildManager::isBuilding(it.key())) {
+ qbsProjectForTarget = qbs::Project();
+ }
}
+ QTC_ASSERT(targetFound || !t, m_qbsProject = qbs::Project());
+ if (t && t->isActive())
+ delayParsing();
}
void QbsProject::startParsing()