diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-17 19:06:45 -0400 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-17 19:06:45 -0400 |
commit | f59bbe43dacc5a17a8917d3b67e7d79f46e2bd72 (patch) | |
tree | d88962857a457b5a89a7bcba5ad4c2c5fd2246c0 /sigscript | |
parent | df534e696682af6706c0497f0717203f6ea5ab93 (diff) | |
download | sigen-f59bbe43dacc5a17a8917d3b67e7d79f46e2bd72.tar.gz sigen-f59bbe43dacc5a17a8917d3b67e7d79f46e2bd72.tar.xz sigen-f59bbe43dacc5a17a8917d3b67e7d79f46e2bd72.zip |
Tighten up locking the mutex for writing
Diffstat (limited to 'sigscript')
-rw-r--r-- | sigscript/Config.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/sigscript/Config.cpp b/sigscript/Config.cpp index 6f8fbf59..9218ee96 100644 --- a/sigscript/Config.cpp +++ b/sigscript/Config.cpp @@ -39,14 +39,13 @@ bool Config::addValue(const QString& name, const QVariant& value) bool Config::setValue(const QString& name, const QVariant& value) { - QWriteLocker locker(&m_lock); if (m_values.contains(name) && (m_values[name].second & ReadOnly)) return false; - if (!m_values.contains(name) || (m_values[name].second & Deleted)) - { - m_values[name].second &= ~Deleted; + if (!m_values.contains(name)) emit(valueAdded(name, value)); - } + if (m_values[name].second & Deleted) + unsetOptions(name, Deleted); + QWriteLocker locker(&m_lock); m_values[name] = Value(value, 0); emit(valueChanged(name, value)); return true; @@ -54,11 +53,13 @@ bool Config::setValue(const QString& name, const QVariant& value) bool Config::removeValue(const QString& name, const bool shadow) { - QWriteLocker locker(&m_lock); if (shadow) setOptions(name, Deleted); else if (m_values.contains(name)) + { + QWriteLocker locker(&m_lock); m_values.remove(name); + } else return false; emit(valueRemoved(name)); @@ -105,9 +106,9 @@ QStringList Config::values(const bool recursive) const bool Config::setOptions(const QString& name, const Options options) { - QWriteLocker locker(&m_lock); - if (m_values.contains(name) && ((~m_values[name].second) & options)) + if ((m_values.contains(name) && (~m_values[name].second & options)) || addValue(name, QVariant())) { + QWriteLocker locker(&m_lock); m_values[name].second |= options; emit(optionsChanged(name, options)); return true; @@ -117,9 +118,9 @@ bool Config::setOptions(const QString& name, const Options options) bool Config::unsetOptions(const QString& name, const Options options) { - QWriteLocker locker(&m_lock); if (m_values.contains(name) && (m_values[name].second & options)) { + QWriteLocker locker(&m_lock); m_values[name].second &= ~options; emit(optionsChanged(name, options)); return true; @@ -139,7 +140,6 @@ Config::Options Config::options(const QString& name, const bool recursive) const void Config::clean() { -// QWriteLocker locker(&m_lock); for (QMutableMapIterator<QString, Value> i(m_values); i.hasNext(); i.next()) { unsetOptions(i.key(), Hidden); |