Cache BuildConfiguration::environment()

Change-Id: I865593f46feb332c385733c53de5884e5cd3751a
Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Daniel Teske
2013-04-19 13:19:46 +02:00
parent 2ed88c44fd
commit 2d568e79c4
2 changed files with 13 additions and 10 deletions

View File

@@ -89,6 +89,8 @@ BuildConfiguration::BuildConfiguration(Target *target, const Core::Id id) :
bsl->setDefaultDisplayName(tr("Clean"));
m_stepLists.append(bsl);
emitEnvironmentChanged();
connect(target, SIGNAL(kitChanged()),
this, SLOT(handleKitUpdate()));
}
@@ -104,6 +106,8 @@ BuildConfiguration::BuildConfiguration(Target *target, BuildConfiguration *sourc
// otherwise BuildStepFactories might reject to set up a BuildStep for us
// since we are not yet the derived class!
emitEnvironmentChanged();
connect(target, SIGNAL(kitChanged()),
this, SLOT(handleKitUpdate()));
}
@@ -159,7 +163,7 @@ bool BuildConfiguration::fromMap(const QVariantMap &map)
m_clearSystemEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)).toBool();
m_userEnvironmentChanges = Utils::EnvironmentItem::fromStringList(map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList());
m_lastEnvironment = environment();
emitEnvironmentChanged();
qDeleteAll(m_stepLists);
m_stepLists.clear();
@@ -193,11 +197,12 @@ bool BuildConfiguration::fromMap(const QVariantMap &map)
void BuildConfiguration::emitEnvironmentChanged()
{
Utils::Environment env = environment();
if (env == m_lastEnvironment)
return;
m_lastEnvironment = env;
emit environmentChanged();
Utils::Environment env = baseEnvironment();
env.modify(userEnvironmentChanges());
if (env == m_cachedEnvironment)
return;
m_cachedEnvironment = env;
emit environmentChanged();
}
void BuildConfiguration::handleKitUpdate()
@@ -229,9 +234,7 @@ QString BuildConfiguration::baseEnvironmentText() const
Utils::Environment BuildConfiguration::environment() const
{
Utils::Environment env = baseEnvironment();
env.modify(userEnvironmentChanges());
return env;
return m_cachedEnvironment;
}
void BuildConfiguration::setUseSystemEnvironment(bool b)

View File

@@ -111,7 +111,7 @@ private:
QList<Utils::EnvironmentItem> m_userEnvironmentChanges;
QList<BuildStepList *> m_stepLists;
Utils::AbstractMacroExpander *m_macroExpander;
Utils::Environment m_lastEnvironment;
mutable Utils::Environment m_cachedEnvironment;
};
class PROJECTEXPLORER_EXPORT IBuildConfigurationFactory :