From b1c472e82b8cccc4ff3a1d500b229b74858ba016 Mon Sep 17 00:00:00 2001 From: Bradley Austin Davis Date: Tue, 14 Jun 2016 12:13:27 -0700 Subject: [PATCH] Fixing settings, even in release builds --- libraries/shared/src/SettingHandle.h | 2 +- libraries/shared/src/SettingManager.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/shared/src/SettingHandle.h b/libraries/shared/src/SettingHandle.h index 74587dcdcb..8e07d28dad 100644 --- a/libraries/shared/src/SettingHandle.h +++ b/libraries/shared/src/SettingHandle.h @@ -97,7 +97,7 @@ namespace Setting { void set(const T& value) { maybeInit(); - if (_value != value) { + if ((!_isSet && (value != _defaultValue)) || _value != value) { _value = value; _isSet = true; save(); diff --git a/libraries/shared/src/SettingManager.cpp b/libraries/shared/src/SettingManager.cpp index ed8565d6c3..abb8525b03 100644 --- a/libraries/shared/src/SettingManager.cpp +++ b/libraries/shared/src/SettingManager.cpp @@ -96,6 +96,7 @@ namespace Setting { } void Manager::saveAll() { + bool forceSync = false; withWriteLock([&] { for (auto key : _pendingChanges.keys()) { auto newValue = _pendingChanges[key]; @@ -104,14 +105,20 @@ namespace Setting { continue; } if (newValue == UNSET_VALUE || !newValue.isValid()) { + forceSync = true; remove(key); } else { + forceSync = true; setValue(key, newValue); } } _pendingChanges.clear(); }); + if (forceSync) { + sync(); + } + // Restart timer if (_saveTimer) { _saveTimer->start();