diff options
Diffstat (limited to 'sigscript/Config.cpp')
-rw-r--r-- | sigscript/Config.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/sigscript/Config.cpp b/sigscript/Config.cpp index 0340d741..3c88728b 100644 --- a/sigscript/Config.cpp +++ b/sigscript/Config.cpp @@ -19,7 +19,8 @@ #include "Config.h" Sigscript::Config::Config(QObject* parent) : - QObject(parent) + QObject(parent), + m_lock(QReadWriteLock::Recursive) { } @@ -34,6 +35,7 @@ void Sigscript::Config::addValue(const QString& name, const QVariant& value, con void Sigscript::Config::setValue(const QString& name, const QVariant& value, const Options options) { + QWriteLocker locker(&m_lock); QVariant oldValue = m_values[name].first; m_values[name] = Value(value, options); emit(valueChanged(name, oldValue, value)); @@ -41,6 +43,7 @@ void Sigscript::Config::setValue(const QString& name, const QVariant& value, con void Sigscript::Config::setOptions(const QString& name, const Options options) { + QWriteLocker locker(&m_lock); const Options oldOptions = m_values[name].second; m_values[name].second |= options; emit(optionsChanged(name, oldOptions, options)); @@ -48,6 +51,7 @@ void Sigscript::Config::setOptions(const QString& name, const Options options) void Sigscript::Config::unsetOptions(const QString& name, const Options options) { + QWriteLocker locker(&m_lock); const Options oldOptions = m_values[name].second; m_values[name].second |= ~options; emit(optionsChanged(name, oldOptions, options)); @@ -55,6 +59,7 @@ void Sigscript::Config::unsetOptions(const QString& name, const Options options) void Sigscript::Config::removeValue(const QString& name, const bool shadow) { + QWriteLocker locker(&m_lock); if (shadow) m_values[name].second |= Deleted; else @@ -64,6 +69,7 @@ void Sigscript::Config::removeValue(const QString& name, const bool shadow) QVariant Sigscript::Config::value(const QString& name, const bool recursive) const { + QReadLocker locker(&m_lock); if (m_values.contains(name)) { if (m_values[name].second & (Deleted | Hidden)) @@ -85,6 +91,7 @@ QVariant Sigscript::Config::value(const QString& name, const bool recursive) con bool Sigscript::Config::hasValue(const QString& name, const bool recursive) const { + QReadLocker locker(&m_lock); if (m_values.contains(name)) return !(m_values[name].second & (Deleted | Hidden)); if (recursive && qobject_cast<Config*>(parent())) @@ -94,6 +101,7 @@ bool Sigscript::Config::hasValue(const QString& name, const bool recursive) cons void Sigscript::Config::clean() { + QWriteLocker locker(&m_lock); for (QMutableMapIterator<QString, Value> i(m_values); i.hasNext(); i.next()) { if (i.value().second & Temporary) @@ -107,4 +115,5 @@ void Sigscript::Config::clean() void Sigscript::Config::writeBack() { + QWriteLocker locker(&m_lock); } |