diff --git a/src/plugins/qnx/blackberryapilevelconfiguration.cpp b/src/plugins/qnx/blackberryapilevelconfiguration.cpp index c9aeaf64669..82021dc1226 100644 --- a/src/plugins/qnx/blackberryapilevelconfiguration.cpp +++ b/src/plugins/qnx/blackberryapilevelconfiguration.cpp @@ -452,23 +452,39 @@ bool BlackBerryApiLevelConfiguration::activate() void BlackBerryApiLevelConfiguration::deactivate() { + QList qtvToRemove; + QList tcToRemove; + QList dbgToRemove; + foreach (Kit *kit, KitManager::kits()) { if (kit->isAutoDetected() && kit->autoDetectionSource() == ndkEnvFile().toString()) { BaseQtVersion *version = QtKitInformation::qtVersion(kit); ToolChain *toolChain = ToolChainKitInformation::toolChain(kit); const DebuggerItem *debugger = DebuggerKitInformation::debugger(kit); - if (version) - QtVersionManager::removeVersion(version); - if (toolChain) - ToolChainManager::deregisterToolChain(toolChain); - if (debugger) - DebuggerItemManager::deregisterDebugger(debugger->id()); + // Kit's Qt version, tool chain or debugger might be used by other BB kits + // generated for the same API level that are not yet unregistered. This triggers warning outputs. + // Let's unregistered/removed them later once all API level kits are unregistered. + if (version && !qtvToRemove.contains(version)) + qtvToRemove << version; + if (toolChain && !tcToRemove.contains(toolChain)) + tcToRemove << toolChain; + if (debugger && !dbgToRemove.contains(debugger)) + dbgToRemove << debugger; KitManager::deregisterKit(kit); } } + foreach (BaseQtVersion *qtv, qtvToRemove) + QtVersionManager::removeVersion(qtv); + + foreach (ToolChain *tc, tcToRemove) + ToolChainManager::deregisterToolChain(tc); + + foreach (const DebuggerItem *debugger, dbgToRemove) + DebuggerItemManager::deregisterDebugger(debugger->id()); + BlackBerryConfigurationManager::instance()->emitSettingsChanged(); }