Skip to content

Commit

Permalink
Merge pull request #9536 from Filoppi/config_fixes
Browse files Browse the repository at this point in the history
Don't call OnConfigChanged() unless config actually changed
  • Loading branch information
leoetlino committed Feb 26, 2021
2 parents 0920097 + e020b2e commit 9d0983c
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
4 changes: 2 additions & 2 deletions Source/Core/Common/Config/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ LayerType GetActiveLayerForConfig(const Info<T>& info)
template <typename T>
void Set(LayerType layer, const Info<T>& info, const std::common_type_t<T>& value)
{
GetLayer(layer)->Set(info, value);
OnConfigChanged();
if (GetLayer(layer)->Set(info, value))
OnConfigChanged();
}

template <typename T>
Expand Down
13 changes: 7 additions & 6 deletions Source/Core/Common/Config/Layer.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,24 +118,25 @@ class Layer
}

template <typename T>
void Set(const Info<T>& config_info, const std::common_type_t<T>& value)
bool Set(const Info<T>& config_info, const std::common_type_t<T>& value)
{
Set(config_info.GetLocation(), value);
return Set(config_info.GetLocation(), value);
}

template <typename T>
void Set(const Location& location, const T& value)
bool Set(const Location& location, const T& value)
{
Set(location, ValueToString(value));
return Set(location, ValueToString(value));
}

void Set(const Location& location, std::string new_value)
bool Set(const Location& location, std::string new_value)
{
const auto iter = m_map.find(location);
if (iter != m_map.end() && iter->second == new_value)
return;
return false;
m_is_dirty = true;
m_map.insert_or_assign(location, std::move(new_value));
return true;
}

void MarkAsDirty() { m_is_dirty = true; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -381,7 +381,9 @@ void Init()
Config::SetBase(Settings::SERVER_PORT, 0);
}

// It would be much better to unbind from this callback on DeInit but it's not possible as of now
Config::AddConfigChangedCallback(ConfigChanged);
ConfigChanged(); // Call it immediately to load settings
}

void PopulateDevices()
Expand Down

0 comments on commit 9d0983c

Please sign in to comment.