summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2013-05-06 17:21:59 +0200
committerTobias Hunger <tobias.hunger@digia.com>2013-05-07 16:03:38 +0200
commit0ef3acc9f29ce1855dbd9cda09f195001b8f4953 (patch)
tree4756c2044150f0475396e7957700e80400bc7085
parent721f20e8709ead93eec1e2084e43b072178d0b72 (diff)
downloadqt-creator-0ef3acc9f29ce1855dbd9cda09f195001b8f4953.tar.gz
ToolChains: Stop SDK-tool chains from multiplying
Task-number: QTCREATORBUG-9124 Change-Id: I93b43183e217b63179a9813e39c242a459eca842 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
-rw-r--r--src/plugins/projectexplorer/toolchainmanager.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index 4f29847aa6..91bef09955 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -159,6 +159,16 @@ void ToolChainManager::restoreToolChains()
}
readTcs.clear();
+ // Remove TCs configured by the SDK:
+ foreach (ToolChain *tc, tcsToRegister) {
+ for (int i = tcsToCheck.count() - 1; i >= 0; --i) {
+ if (tcsToCheck.at(i)->id() == tc->id()) {
+ delete tcsToCheck.at(i);
+ tcsToCheck.removeAt(i);
+ }
+ }
+ }
+
// Then auto detect
QList<ToolChain *> detectedTcs;
QList<ToolChainFactory *> factories = ExtensionSystem::PluginManager::getObjects<ToolChainFactory>();
@@ -179,7 +189,7 @@ void ToolChainManager::restoreToolChains()
break;
}
}
- registerToolChain(toStore);
+ tcsToRegister += toStore;
}
// Keep toolchains that were not rediscovered but are still executable and delete the rest
@@ -189,7 +199,7 @@ void ToolChainManager::restoreToolChains()
.arg(tc->displayName()).arg(tc->id());
delete tc;
} else {
- registerToolChain(tc);
+ tcsToRegister += tc;
}
}
@@ -337,6 +347,7 @@ bool ToolChainManager::registerToolChain(ToolChain *tc)
foreach (ToolChain *current, d->m_toolChains) {
if (*tc == *current && !tc->isAutoDetected())
return false;
+ QTC_ASSERT(current->id() != tc->id(), return false);
}
d->m_toolChains.append(tc);