From 103e2b939878ae5870ce74f7fea93c12a122f2af Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Wed, 25 Sep 2019 02:36:37 +0800 Subject: [PATCH 1/2] Use non-recursive mutex The related classes doesn't really need recursive mutex so drop it. And if it is really required it usually indicates bad design and we should avoid it anyway. --- src/base/logger.cpp | 5 ++--- src/base/settingsstorage.cpp | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/base/logger.cpp b/src/base/logger.cpp index c27ef1784..ff6216a14 100644 --- a/src/base/logger.cpp +++ b/src/base/logger.cpp @@ -49,7 +49,6 @@ Logger *Logger::m_instance = nullptr; Logger::Logger() : m_messages(MAX_LOG_MESSAGES) , m_peers(MAX_LOG_MESSAGES) - , m_lock(QReadWriteLock::Recursive) { } @@ -75,9 +74,9 @@ void Logger::freeInstance() void Logger::addMessage(const QString &message, const Log::MsgType &type) { QWriteLocker locker(&m_lock); - const Log::Msg temp = {m_msgCounter++, QDateTime::currentMSecsSinceEpoch(), type, message.toHtmlEscaped()}; m_messages.push_back(temp); + locker.unlock(); emit newLogMessage(temp); } @@ -85,9 +84,9 @@ void Logger::addMessage(const QString &message, const Log::MsgType &type) void Logger::addPeer(const QString &ip, const bool blocked, const QString &reason) { QWriteLocker locker(&m_lock); - const Log::Peer temp = {m_peerCounter++, QDateTime::currentMSecsSinceEpoch(), ip.toHtmlEscaped(), blocked, reason.toHtmlEscaped()}; m_peers.push_back(temp); + locker.unlock(); emit newLogPeer(temp); } diff --git a/src/base/settingsstorage.cpp b/src/base/settingsstorage.cpp index 85fdaad4f..0f57ccb45 100644 --- a/src/base/settingsstorage.cpp +++ b/src/base/settingsstorage.cpp @@ -155,7 +155,6 @@ SettingsStorage *SettingsStorage::m_instance = nullptr; SettingsStorage::SettingsStorage() : m_data{TransactionalSettings(QLatin1String("qBittorrent")).read()} , m_dirty(false) - , m_lock(QReadWriteLock::Recursive) { m_timer.setSingleShot(true); m_timer.setInterval(5 * 1000); From de7d62c1285c1c073f44883ce79db96ae29946ba Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Wed, 25 Sep 2019 15:49:27 +0800 Subject: [PATCH 2/2] Clean up code --- src/base/logger.cpp | 16 ++++++++-------- src/base/settingsstorage.cpp | 3 ++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/base/logger.cpp b/src/base/logger.cpp index ff6216a14..c047f650e 100644 --- a/src/base/logger.cpp +++ b/src/base/logger.cpp @@ -74,26 +74,26 @@ void Logger::freeInstance() void Logger::addMessage(const QString &message, const Log::MsgType &type) { QWriteLocker locker(&m_lock); - const Log::Msg temp = {m_msgCounter++, QDateTime::currentMSecsSinceEpoch(), type, message.toHtmlEscaped()}; - m_messages.push_back(temp); + const Log::Msg msg = {m_msgCounter++, QDateTime::currentMSecsSinceEpoch(), type, message.toHtmlEscaped()}; + m_messages.push_back(msg); locker.unlock(); - emit newLogMessage(temp); + emit newLogMessage(msg); } void Logger::addPeer(const QString &ip, const bool blocked, const QString &reason) { QWriteLocker locker(&m_lock); - const Log::Peer temp = {m_peerCounter++, QDateTime::currentMSecsSinceEpoch(), ip.toHtmlEscaped(), blocked, reason.toHtmlEscaped()}; - m_peers.push_back(temp); + const Log::Peer msg = {m_peerCounter++, QDateTime::currentMSecsSinceEpoch(), ip.toHtmlEscaped(), blocked, reason.toHtmlEscaped()}; + m_peers.push_back(msg); locker.unlock(); - emit newLogPeer(temp); + emit newLogPeer(msg); } QVector Logger::getMessages(const int lastKnownId) const { - QReadLocker locker(&m_lock); + const QReadLocker locker(&m_lock); const int diff = m_msgCounter - lastKnownId - 1; const int size = m_messages.size(); @@ -109,7 +109,7 @@ QVector Logger::getMessages(const int lastKnownId) const QVector Logger::getPeers(const int lastKnownId) const { - QReadLocker locker(&m_lock); + const QReadLocker locker(&m_lock); const int diff = m_peerCounter - lastKnownId - 1; const int size = m_peers.size(); diff --git a/src/base/settingsstorage.cpp b/src/base/settingsstorage.cpp index 0f57ccb45..40fcebd2a 100644 --- a/src/base/settingsstorage.cpp +++ b/src/base/settingsstorage.cpp @@ -201,8 +201,9 @@ bool SettingsStorage::save() QVariant SettingsStorage::loadValue(const QString &key, const QVariant &defaultValue) const { + const QString realKey = mapKey(key); const QReadLocker locker(&m_lock); - return m_data.value(mapKey(key), defaultValue); + return m_data.value(realKey, defaultValue); } void SettingsStorage::storeValue(const QString &key, const QVariant &value)