diff --git a/Source/Core/Common/Config/Config.cpp b/Source/Core/Common/Config/Config.cpp index 071d009b51..c75b6ee5e9 100644 --- a/Source/Core/Common/Config/Config.cpp +++ b/Source/Core/Common/Config/Config.cpp @@ -71,11 +71,14 @@ void AddConfigChangedCallback(ConfigChangedCallback func) void OnConfigChanged() { + // Increment the config version to invalidate caches. + // To ensure that getters do not return stale data, this should always be done + // even when callbacks are suppressed. + s_config_version.fetch_add(1, std::memory_order_relaxed); + if (s_callback_guards) return; - s_config_version.fetch_add(1, std::memory_order_relaxed); - for (const auto& callback : s_callbacks) callback(); }