aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/target.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2018-02-22 08:51:20 +0100
committerhjk <hjk@qt.io>2018-02-23 07:09:41 +0000
commit38d15ebe2f6b398a7c3a3ca7a32335b5f4ed708d (patch)
tree700741fefdd08f9f308212b6329ad321656cd650 /src/plugins/projectexplorer/target.cpp
parent39b66f2cb8b6ed674567ee349780b9e173fa7b9f (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.cpp33
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;