ToolChains: Stop SDK-tool chains from multiplying

Task-number: QTCREATORBUG-9124
Change-Id: I93b43183e217b63179a9813e39c242a459eca842
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
Tobias Hunger
2013-05-06 17:21:59 +02:00
parent 721f20e870
commit 0ef3acc9f2

View File

@@ -159,6 +159,16 @@ void ToolChainManager::restoreToolChains()
} }
readTcs.clear(); 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 // Then auto detect
QList<ToolChain *> detectedTcs; QList<ToolChain *> detectedTcs;
QList<ToolChainFactory *> factories = ExtensionSystem::PluginManager::getObjects<ToolChainFactory>(); QList<ToolChainFactory *> factories = ExtensionSystem::PluginManager::getObjects<ToolChainFactory>();
@@ -179,7 +189,7 @@ void ToolChainManager::restoreToolChains()
break; break;
} }
} }
registerToolChain(toStore); tcsToRegister += toStore;
} }
// Keep toolchains that were not rediscovered but are still executable and delete the rest // 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()); .arg(tc->displayName()).arg(tc->id());
delete tc; delete tc;
} else { } else {
registerToolChain(tc); tcsToRegister += tc;
} }
} }
@@ -337,6 +347,7 @@ bool ToolChainManager::registerToolChain(ToolChain *tc)
foreach (ToolChain *current, d->m_toolChains) { foreach (ToolChain *current, d->m_toolChains) {
if (*tc == *current && !tc->isAutoDetected()) if (*tc == *current && !tc->isAutoDetected())
return false; return false;
QTC_ASSERT(current->id() != tc->id(), return false);
} }
d->m_toolChains.append(tc); d->m_toolChains.append(tc);