diff options
author | Tobias Hunger <tobias.hunger@digia.com> | 2013-05-06 17:21:59 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@digia.com> | 2013-05-07 16:03:38 +0200 |
commit | 0ef3acc9f29ce1855dbd9cda09f195001b8f4953 (patch) | |
tree | 4756c2044150f0475396e7957700e80400bc7085 | |
parent | 721f20e8709ead93eec1e2084e43b072178d0b72 (diff) | |
download | qt-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.cpp | 15 |
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); |