From 3eee1e61e2bce6879fd64c7414f3aefdbf43a6b1 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 6 Sep 2026 01:04:37 +1000 Subject: [PATCH] INISettingsInterface: Don't set dirty if unchanged in SetKeyValueList() --- src/util/ini_settings_interface.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/util/ini_settings_interface.cpp b/src/util/ini_settings_interface.cpp index db79448b8..b17206694 100644 --- a/src/util/ini_settings_interface.cpp +++ b/src/util/ini_settings_interface.cpp @@ -685,6 +685,26 @@ INISettingsInterface::KeyValueList INISettingsInterface::GetKeyValueList(const c void INISettingsInterface::SetKeyValueList(const char* section, const KeyValueList& items) { Section& sec = GetOrCreateSection(section); + + // don't dirty if it hasn't changed + if (sec.entries.size() == items.size()) + { + size_t i; + for (i = 0; i < sec.entries.size(); i++) + { + if (GetPoolStringView(sec.entries[i].key) != items[i].first || + GetPoolStringView(sec.entries[i].value) != items[i].second) + { + break; + } + } + if (i == sec.entries.size()) + { + // no change + return; + } + } + sec.entries.clear(); for (const auto& [k, v] : items)