From b0cc456087201c5178d4e5b5717be2dc73f3ee41 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Fri, 6 Jan 2023 13:40:17 +0100 Subject: [PATCH] usa thread safe db where makes sense --- resources/desktop/rssguard.metainfo.xml.in | 2 +- src/librssguard/core/feeddownloader.cpp | 4 +--- src/librssguard/services/abstract/feed.cpp | 6 +----- src/librssguard/services/abstract/importantnode.cpp | 5 +---- src/librssguard/services/abstract/label.cpp | 13 +++---------- src/librssguard/services/abstract/recyclebin.cpp | 5 +---- src/librssguard/services/abstract/serviceroot.cpp | 10 +++------- src/librssguard/services/abstract/unreadnode.cpp | 5 +---- 8 files changed, 12 insertions(+), 38 deletions(-) diff --git a/resources/desktop/rssguard.metainfo.xml.in b/resources/desktop/rssguard.metainfo.xml.in index 5da01b359..9f4b74f4e 100644 --- a/resources/desktop/rssguard.metainfo.xml.in +++ b/resources/desktop/rssguard.metainfo.xml.in @@ -60,7 +60,7 @@ - + @APP_LOW_NAME@ diff --git a/src/librssguard/core/feeddownloader.cpp b/src/librssguard/core/feeddownloader.cpp index 02b683622..a78cfb3b9 100644 --- a/src/librssguard/core/feeddownloader.cpp +++ b/src/librssguard/core/feeddownloader.cpp @@ -223,9 +223,7 @@ void FeedDownloader::updateOneFeed(ServiceRoot* acc, tmr.start(); try { - bool is_main_thread = QThread::currentThread() == qApp->thread(); - QSqlDatabase database = is_main_thread ? qApp->database()->driver()->connection(metaObject()->className()) - : qApp->database()->driver()->connection(QSL("feed_upd_%1").arg(thread_id)); + QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); QList msgs = feed->getParentServiceRoot()->obtainNewMessages(feed, stated_messages, tagged_messages); qDebugNN << LOGSEC_FEEDDOWNLOADER << "Downloaded" << NONQUOTE_W_SPACE(msgs.size()) << "messages for feed ID" diff --git a/src/librssguard/services/abstract/feed.cpp b/src/librssguard/services/abstract/feed.cpp index 6550baf53..2ce2240b2 100644 --- a/src/librssguard/services/abstract/feed.cpp +++ b/src/librssguard/services/abstract/feed.cpp @@ -196,11 +196,7 @@ void Feed::appendMessageFilter(MessageFilter* filter) { } void Feed::updateCounts(bool including_total_count) { - bool is_main_thread = QThread::currentThread() == qApp->thread(); - qlonglong thread_id = qlonglong(QThread::currentThreadId()); - QSqlDatabase database = is_main_thread ? qApp->database()->driver()->connection(metaObject()->className()) - : qApp->database()->driver()->connection(QSL("feed_upd_%1").arg(thread_id)); - + QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); int account_id = getParentServiceRoot()->accountId(); if (including_total_count) { diff --git a/src/librssguard/services/abstract/importantnode.cpp b/src/librssguard/services/abstract/importantnode.cpp index 684b1a683..9526f96d4 100644 --- a/src/librssguard/services/abstract/importantnode.cpp +++ b/src/librssguard/services/abstract/importantnode.cpp @@ -25,10 +25,7 @@ QList ImportantNode::undeletedMessages() const { } void ImportantNode::updateCounts(bool including_total_count) { - bool is_main_thread = QThread::currentThread() == qApp->thread(); - qlonglong thread_id = qlonglong(QThread::currentThreadId()); - QSqlDatabase database = is_main_thread ? qApp->database()->driver()->connection(metaObject()->className()) - : qApp->database()->driver()->connection(QSL("feed_upd_%1").arg(thread_id)); + QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); int account_id = getParentServiceRoot()->accountId(); if (including_total_count) { diff --git a/src/librssguard/services/abstract/label.cpp b/src/librssguard/services/abstract/label.cpp index b292873c3..9fb7e1c83 100644 --- a/src/librssguard/services/abstract/label.cpp +++ b/src/librssguard/services/abstract/label.cpp @@ -76,10 +76,7 @@ bool Label::deleteViaGui() { } void Label::updateCounts(bool including_total_count) { - bool is_main_thread = QThread::currentThread() == qApp->thread(); - qlonglong thread_id = qlonglong(QThread::currentThreadId()); - QSqlDatabase database = is_main_thread ? qApp->database()->driver()->connection(metaObject()->className()) - : qApp->database()->driver()->connection(QSL("feed_upd_%1").arg(thread_id)); + QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); int account_id = getParentServiceRoot()->accountId(); if (including_total_count) { @@ -110,9 +107,7 @@ QIcon Label::generateIcon(const QColor& color) { } void Label::assignToMessage(const Message& msg) { - bool is_main_thread = QThread::currentThread() == qApp->thread(); - QSqlDatabase database = is_main_thread ? qApp->database()->driver()->connection(metaObject()->className()) - : qApp->database()->driver()->connection(QSL("feed_upd")); + QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); if (getParentServiceRoot()->onBeforeLabelMessageAssignmentChanged({this}, {msg}, true)) { DatabaseQueries::assignLabelToMessage(database, this, msg); @@ -122,9 +117,7 @@ void Label::assignToMessage(const Message& msg) { } void Label::deassignFromMessage(const Message& msg) { - bool is_main_thread = QThread::currentThread() == qApp->thread(); - QSqlDatabase database = is_main_thread ? qApp->database()->driver()->connection(metaObject()->className()) - : qApp->database()->driver()->connection(QSL("feed_upd")); + QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); if (getParentServiceRoot()->onBeforeLabelMessageAssignmentChanged({this}, {msg}, false)) { DatabaseQueries::deassignLabelFromMessage(database, this, msg); diff --git a/src/librssguard/services/abstract/recyclebin.cpp b/src/librssguard/services/abstract/recyclebin.cpp index e54e839dc..d80c4ce1a 100644 --- a/src/librssguard/services/abstract/recyclebin.cpp +++ b/src/librssguard/services/abstract/recyclebin.cpp @@ -32,10 +32,7 @@ int RecycleBin::countOfAllMessages() const { } void RecycleBin::updateCounts(bool update_total_count) { - bool is_main_thread = QThread::currentThread() == qApp->thread(); - qlonglong thread_id = qlonglong(QThread::currentThreadId()); - QSqlDatabase database = is_main_thread ? qApp->database()->driver()->connection(metaObject()->className()) - : qApp->database()->driver()->connection(QSL("feed_upd_%1").arg(thread_id)); + QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); m_unreadCount = DatabaseQueries::getMessageCountsForBin(database, getParentServiceRoot()->accountId(), false); diff --git a/src/librssguard/services/abstract/serviceroot.cpp b/src/librssguard/services/abstract/serviceroot.cpp index b59b64952..c5e6d541e 100644 --- a/src/librssguard/services/abstract/serviceroot.cpp +++ b/src/librssguard/services/abstract/serviceroot.cpp @@ -954,14 +954,10 @@ QPair ServiceRoot::updateMessages(QList& messages, Feed* feed } QList items_to_update; - bool is_main_thread = QThread::currentThread() == qApp->thread(); - - qDebugNN << LOGSEC_CORE << "Updating messages in DB. Main thread:" << QUOTE_W_SPACE_DOT(is_main_thread); - bool ok = false; - qlonglong thread_id = qlonglong(QThread::currentThreadId()); - QSqlDatabase database = is_main_thread ? qApp->database()->driver()->connection(metaObject()->className()) - : qApp->database()->driver()->connection(QSL("feed_upd_%1").arg(thread_id)); + QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); + + qDebugNN << LOGSEC_CORE << "Updating messages in DB."; updated_messages = DatabaseQueries::updateMessages(database, messages, feed, force_update, &ok); diff --git a/src/librssguard/services/abstract/unreadnode.cpp b/src/librssguard/services/abstract/unreadnode.cpp index f143ff34c..d71be05f5 100644 --- a/src/librssguard/services/abstract/unreadnode.cpp +++ b/src/librssguard/services/abstract/unreadnode.cpp @@ -25,10 +25,7 @@ QList UnreadNode::undeletedMessages() const { void UnreadNode::updateCounts(bool including_total_count) { Q_UNUSED(including_total_count) - bool is_main_thread = QThread::currentThread() == qApp->thread(); - qlonglong thread_id = qlonglong(QThread::currentThreadId()); - QSqlDatabase database = is_main_thread ? qApp->database()->driver()->connection(metaObject()->className()) - : qApp->database()->driver()->connection(QSL("feed_upd_%1").arg(thread_id)); + QSqlDatabase database = qApp->database()->driver()->threadSafeConnection(metaObject()->className()); int account_id = getParentServiceRoot()->accountId(); m_totalCount = m_unreadCount = DatabaseQueries::getUnreadMessageCounts(database, account_id);