From 498e85d9a6713c7ed3f83cf4c878e95f47b4d4c7 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Mon, 28 May 2018 06:51:21 +0200 Subject: [PATCH] Try to repair #188. --- src/miscellaneous/databasefactory.cpp | 2 ++ src/miscellaneous/feedreader.cpp | 31 ++++++--------------------- src/miscellaneous/feedreader.h | 1 - 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/src/miscellaneous/databasefactory.cpp b/src/miscellaneous/databasefactory.cpp index 498f16845..0ae51955d 100755 --- a/src/miscellaneous/databasefactory.cpp +++ b/src/miscellaneous/databasefactory.cpp @@ -710,6 +710,8 @@ QSqlDatabase DatabaseFactory::sqliteConnection(const QString& connection_name, D database.setDatabaseName(QSL(":memory:")); + auto aaa = database.driverName(); + if (!database.isOpen() && !database.open()) { qFatal("In-memory SQLite database was NOT opened. Delivered error message: '%s'.", qPrintable(database.lastError().text())); diff --git a/src/miscellaneous/feedreader.cpp b/src/miscellaneous/feedreader.cpp index d1628547e..99bc7dfcc 100755 --- a/src/miscellaneous/feedreader.cpp +++ b/src/miscellaneous/feedreader.cpp @@ -24,8 +24,7 @@ FeedReader::FeedReader(QObject* parent) : QObject(parent), m_feedServices(QList()), - m_autoUpdateTimer(new QTimer(this)), - m_feedDownloaderThread(nullptr), m_feedDownloader(nullptr), + m_autoUpdateTimer(new QTimer(this)), m_feedDownloader(nullptr), m_dbCleanerThread(nullptr), m_dbCleaner(nullptr) { m_feedsModel = new FeedsModel(this); m_feedsProxyModel = new FeedsProxyModel(m_feedsModel, this); @@ -72,20 +71,14 @@ void FeedReader::updateFeeds(const QList& feeds) { qDebug("Creating FeedDownloader singleton."); m_feedDownloader = new FeedDownloader(); - m_feedDownloaderThread = new QThread(); // Downloader setup. qRegisterMetaType>("QList"); - m_feedDownloader->moveToThread(m_feedDownloaderThread); - connect(m_feedDownloaderThread, &QThread::finished, m_feedDownloaderThread, &QThread::deleteLater); connect(m_feedDownloader, &FeedDownloader::updateFinished, this, &FeedReader::feedUpdatesFinished); connect(m_feedDownloader, &FeedDownloader::updateProgress, this, &FeedReader::feedUpdatesProgress); connect(m_feedDownloader, &FeedDownloader::updateStarted, this, &FeedReader::feedUpdatesStarted); connect(m_feedDownloader, &FeedDownloader::updateFinished, qApp->feedUpdateLock(), &Mutex::unlock); - - // Connections are made, start the feed downloader thread. - m_feedDownloaderThread->start(); } QMetaObject::invokeMethod(m_feedDownloader, "updateFeeds", Q_ARG(QList, feeds)); @@ -231,24 +224,14 @@ void FeedReader::quit() { m_autoUpdateTimer->stop(); } - // Close worker threads. - if (m_feedDownloaderThread != nullptr && m_feedDownloaderThread->isRunning()) { - m_feedDownloader->stopRunningUpdate(); + // Stop running updates. + m_feedDownloader->stopRunningUpdate(); - if (m_feedDownloader->isUpdateRunning()) { - QEventLoop loop(this); + if (m_feedDownloader->isUpdateRunning()) { + QEventLoop loop(this); - connect(m_feedDownloader, &FeedDownloader::updateFinished, &loop, &QEventLoop::quit); - loop.exec(); - } - - qDebug("Quitting feed downloader thread."); - m_feedDownloaderThread->quit(); - - if (!m_feedDownloaderThread->wait(CLOSE_LOCK_TIMEOUT)) { - qCritical("Feed downloader thread is running despite it was told to quit. Terminating it."); - m_feedDownloaderThread->terminate(); - } + connect(m_feedDownloader, &FeedDownloader::updateFinished, &loop, &QEventLoop::quit); + loop.exec(); } if (m_dbCleanerThread != nullptr && m_dbCleanerThread->isRunning()) { diff --git a/src/miscellaneous/feedreader.h b/src/miscellaneous/feedreader.h index b9f900043..2cdf22f4e 100755 --- a/src/miscellaneous/feedreader.h +++ b/src/miscellaneous/feedreader.h @@ -83,7 +83,6 @@ class FeedReader : public QObject { bool m_globalAutoUpdateEnabled; int m_globalAutoUpdateInitialInterval; int m_globalAutoUpdateRemainingInterval; - QThread* m_feedDownloaderThread; FeedDownloader* m_feedDownloader; QThread* m_dbCleanerThread; DatabaseCleaner* m_dbCleaner;