diff options
| author | Léo Lam <leo@leolam.fr> | 2020-12-29 22:22:15 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-29 22:22:15 +0100 |
| commit | 3b2e31230fba0d9bc27ed9174d408be534851444 (patch) | |
| tree | 11c5447f17aa4d2c8b375ee9405cf5e156816573 /Source/Core/Common/Config/Config.cpp | |
| parent | 92de0431a2daae6a1ccb2f9edc21c8343d72cb8f (diff) | |
| parent | 9ffd345df03853cd37a392f2f19dc7bac889158e (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.cpp | 7 |
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(); } |
