3
0
Fork 0
mirror of https://github.com/lubosz/overte.git synced 2025-04-26 15:15:27 +02:00

Fixing issues with unclosed groups in settings persistence

This commit is contained in:
Bradley Austin Davis 2016-06-13 15:26:48 -07:00
parent 196ab401e5
commit 34c8d257d2
5 changed files with 15 additions and 0 deletions

View file

@ -173,6 +173,7 @@ void AccountManager::setAuthURL(const QUrl& authURL) {
<< "from previous settings file";
}
}
settings.endGroup();
if (_accountInfo.getAccessToken().token.isEmpty()) {
qCWarning(networking) << "Unable to load account file. No existing account settings will be loaded.";

View file

@ -334,6 +334,7 @@ void ScriptEngines::clearScripts() {
Settings settings;
settings.beginWriteArray(SETTINGS_KEY);
settings.remove("");
settings.endArray();
}
void ScriptEngines::saveScripts() {

View file

@ -18,6 +18,7 @@
const QString Settings::firstRun { "firstRun" };
Settings::Settings() :
_manager(DependencyManager::get<Setting::Manager>()),
_locker(&(_manager->getLock()))
@ -25,6 +26,9 @@ Settings::Settings() :
}
Settings::~Settings() {
if (_prefixes.size() != 0) {
qFatal("Unstable Settings Prefixes: You must call endGroup for every beginGroup and endArray for every begin*Array call");
}
}
void Settings::remove(const QString& key) {
@ -50,14 +54,17 @@ bool Settings::contains(const QString& key) const {
}
int Settings::beginReadArray(const QString & prefix) {
_prefixes.push(prefix);
return _manager->beginReadArray(prefix);
}
void Settings::beginWriteArray(const QString& prefix, int size) {
_prefixes.push(prefix);
_manager->beginWriteArray(prefix, size);
}
void Settings::endArray() {
_prefixes.pop();
_manager->endArray();
}
@ -66,10 +73,12 @@ void Settings::setArrayIndex(int i) {
}
void Settings::beginGroup(const QString& prefix) {
_prefixes.push(prefix);
_manager->beginGroup(prefix);
}
void Settings::endGroup() {
_prefixes.pop();
_manager->endGroup();
}

View file

@ -58,8 +58,10 @@ public:
void setQuatValue(const QString& name, const glm::quat& quatValue);
void getQuatValueIfValid(const QString& name, glm::quat& quatValue);
private:
QSharedPointer<Setting::Manager> _manager;
QWriteLocker _locker;
QStack<QString> _prefixes;
};
namespace Setting {

View file

@ -98,6 +98,8 @@ namespace Setting {
// Register Handle
manager->registerHandle(this);
_isInitialized = true;
} else {
qWarning() << "Settings interface used after manager destroyed";
}
// Load value from disk