diff options
author | hjk <hjk@qt.io> | 2018-02-22 08:51:20 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-02-23 07:09:41 +0000 |
commit | 38d15ebe2f6b398a7c3a3ca7a32335b5f4ed708d (patch) | |
tree | 700741fefdd08f9f308212b6329ad321656cd650 /src/plugins/projectexplorer/target.cpp | |
parent | 39b66f2cb8b6ed674567ee349780b9e173fa7b9f (diff) |
RunConfiguration: Avoid unneeded calls to availableCreators()
It has been used twice on each Target::updateDefaultRunConfigurations():
Once to help filter out potentially interesting factories, and then
to actually retrieve the creators from the interesting factories.
The same result can be obtained with less effort and less code.
Change-Id: Ic83423bbbc172c842ec5a55fcd6ad83106e268aa
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/target.cpp')
-rw-r--r-- | src/plugins/projectexplorer/target.cpp | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 3b69057780..915110b61b 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -536,8 +536,22 @@ void Target::updateDefaultDeployConfigurations() void Target::updateDefaultRunConfigurations() { - const QList<IRunConfigurationFactory *> rcFactories = IRunConfigurationFactory::find(this); - if (rcFactories.isEmpty()) { + // find all RC ids that can get created: + QList<RunConfigurationCreationInfo> allAvailableFactories; + QList<RunConfigurationCreationInfo> autoCreateFactories; + + for (IRunConfigurationFactory *rcFactory : IRunConfigurationFactory::allFactories()) { + if (rcFactory->canHandle(this)) { + const QList<RunConfigurationCreationInfo> creators = rcFactory->availableCreators(this); + for (const RunConfigurationCreationInfo &creator : creators) { + allAvailableFactories.append(creator); // Manual and Auto + if (creator.creationMode == RunConfigurationCreationInfo::AlwaysCreate) + autoCreateFactories.append(creator); // Auto only. + } + } + } + + if (allAvailableFactories.isEmpty()) { qWarning("No run configuration factory found for target id '%s'.", qPrintable(id().toString())); return; } @@ -553,21 +567,6 @@ void Target::updateDefaultRunConfigurations() [](const RunConfiguration *rc) { return rc->isConfigured(); }); int configuredCount = existingConfigured.count(); - // find all RC ids that can get created: - QList<RunConfigurationCreationInfo> allAvailableFactories; - QList<RunConfigurationCreationInfo> autoCreateFactories; - - for (IRunConfigurationFactory *rcFactory : rcFactories) { - if (rcFactory->canHandle(this)) { - const QList<RunConfigurationCreationInfo> creators = rcFactory->availableCreators(this); - for (const RunConfigurationCreationInfo &creator : creators) { - allAvailableFactories.append(creator); // Manual and Auto - if (creator.creationMode == RunConfigurationCreationInfo::AlwaysCreate) - autoCreateFactories.append(creator); // Auto only. - } - } - } - // Put outdated RCs into toRemove, do not bother with factories // that produce already existing RCs QList<RunConfiguration *> toRemove; |