From d7f6add74caea6ae7b3e05252852c21897d79a85 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 20 Jan 2015 10:53:16 -0800 Subject: [PATCH] Use QThreadStorage to store QSettings --- libraries/shared/src/Settings.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/libraries/shared/src/Settings.cpp b/libraries/shared/src/Settings.cpp index f57cdb7b76..33cab0b735 100644 --- a/libraries/shared/src/Settings.cpp +++ b/libraries/shared/src/Settings.cpp @@ -10,21 +10,34 @@ // #include +#include +#include #include "Settings.h" namespace SettingHandles { +static QThreadStorage storage; + +QSettings* getSettings() { + if (!storage.hasLocalData()) { + storage.setLocalData(new QSettings()); + QObject::connect(QThread::currentThread(), &QThread::destroyed, + storage.localData(), &QSettings::deleteLater); + } + return storage.localData(); +} + QVariant SettingsBridge::getFromSettings(const QString& key, const QVariant& defaultValue) { - return QSettings().value(key, defaultValue); + return getSettings()->value(key, defaultValue); } void SettingsBridge::setInSettings(const QString& key, const QVariant& value) { - QSettings().setValue(key, value); + getSettings()->setValue(key, value); } void SettingsBridge::removeFromSettings(const QString& key) { - QSettings().remove(key); + getSettings()->remove(key); } }