ToolChainManager: Fix autodetected toolchains going manual

The recent optimization to avoid running toolchains during startup
has broken the registration of tool chains with the manager, resulting
in auto-detected toolchains being demoted to manual in one run and
then getting removed in the next (at which point a new set of toolchains
got auto-detected).

Change-Id: I175c7344238df1bcb36a8b4949f0f0faf8828116
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This commit is contained in:
Tobias Hunger
2015-10-16 12:38:48 +02:00
parent 52e35e7e9d
commit 09bc8af645

View File

@@ -213,7 +213,7 @@ void ToolChainManager::restoreToolChains()
}
// Then auto detect
QList<ToolChain *> detectedTcs;
QList<ToolChain *> detectedTcs = tcsToCheck;
QList<ToolChainFactory *> factories = ExtensionSystem::PluginManager::getObjects<ToolChainFactory>();
foreach (ToolChainFactory *f, factories)
detectedTcs.append(f->autoDetect(tcsToCheck));
@@ -226,7 +226,10 @@ void ToolChainManager::restoreToolChains()
// Check whether we had this TC stored and prefer the old one with the old id, marked
// as auto-detection.
for (int i = 0; i < tcsToCheck.count(); ++i) {
if (*(tcsToCheck.at(i)) == *currentDetected) {
if (tcsToCheck.at(i) == currentDetected) {
tcsToCheck.removeAt(i);
break;
} else if (*(tcsToCheck.at(i)) == *currentDetected) {
toStore = tcsToCheck.at(i);
toStore->setDetection(ToolChain::AutoDetection);
tcsToCheck.removeAt(i);