summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Config/Config.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2020-12-29 22:22:15 +0100
committerGitHub <noreply@github.com>2020-12-29 22:22:15 +0100
commit3b2e31230fba0d9bc27ed9174d408be534851444 (patch)
tree11c5447f17aa4d2c8b375ee9405cf5e156816573 /Source/Core/Common/Config/Config.cpp
parent92de0431a2daae6a1ccb2f9edc21c8343d72cb8f (diff)
parent9ffd345df03853cd37a392f2f19dc7bac889158e (diff)
Merge pull request #9386 from leoetlino/config-cache-invalidate
Config: Fix cache not being invalidated when callbacks are suppressed
Diffstat (limited to 'Source/Core/Common/Config/Config.cpp')
-rw-r--r--Source/Core/Common/Config/Config.cpp7
1 files changed, 5 insertions, 2 deletions
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();
}