Try to repair #188.
This commit is contained in:
parent
9517b5874d
commit
498e85d9a6
@ -710,6 +710,8 @@ QSqlDatabase DatabaseFactory::sqliteConnection(const QString& connection_name, D
|
|||||||
|
|
||||||
database.setDatabaseName(QSL(":memory:"));
|
database.setDatabaseName(QSL(":memory:"));
|
||||||
|
|
||||||
|
auto aaa = database.driverName();
|
||||||
|
|
||||||
if (!database.isOpen() && !database.open()) {
|
if (!database.isOpen() && !database.open()) {
|
||||||
qFatal("In-memory SQLite database was NOT opened. Delivered error message: '%s'.",
|
qFatal("In-memory SQLite database was NOT opened. Delivered error message: '%s'.",
|
||||||
qPrintable(database.lastError().text()));
|
qPrintable(database.lastError().text()));
|
||||||
|
@ -24,8 +24,7 @@
|
|||||||
|
|
||||||
FeedReader::FeedReader(QObject* parent)
|
FeedReader::FeedReader(QObject* parent)
|
||||||
: QObject(parent), m_feedServices(QList<ServiceEntryPoint*>()),
|
: QObject(parent), m_feedServices(QList<ServiceEntryPoint*>()),
|
||||||
m_autoUpdateTimer(new QTimer(this)),
|
m_autoUpdateTimer(new QTimer(this)), m_feedDownloader(nullptr),
|
||||||
m_feedDownloaderThread(nullptr), m_feedDownloader(nullptr),
|
|
||||||
m_dbCleanerThread(nullptr), m_dbCleaner(nullptr) {
|
m_dbCleanerThread(nullptr), m_dbCleaner(nullptr) {
|
||||||
m_feedsModel = new FeedsModel(this);
|
m_feedsModel = new FeedsModel(this);
|
||||||
m_feedsProxyModel = new FeedsProxyModel(m_feedsModel, this);
|
m_feedsProxyModel = new FeedsProxyModel(m_feedsModel, this);
|
||||||
@ -72,20 +71,14 @@ void FeedReader::updateFeeds(const QList<Feed*>& feeds) {
|
|||||||
qDebug("Creating FeedDownloader singleton.");
|
qDebug("Creating FeedDownloader singleton.");
|
||||||
|
|
||||||
m_feedDownloader = new FeedDownloader();
|
m_feedDownloader = new FeedDownloader();
|
||||||
m_feedDownloaderThread = new QThread();
|
|
||||||
|
|
||||||
// Downloader setup.
|
// Downloader setup.
|
||||||
qRegisterMetaType<QList<Feed*>>("QList<Feed*>");
|
qRegisterMetaType<QList<Feed*>>("QList<Feed*>");
|
||||||
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::updateFinished, this, &FeedReader::feedUpdatesFinished);
|
||||||
connect(m_feedDownloader, &FeedDownloader::updateProgress, this, &FeedReader::feedUpdatesProgress);
|
connect(m_feedDownloader, &FeedDownloader::updateProgress, this, &FeedReader::feedUpdatesProgress);
|
||||||
connect(m_feedDownloader, &FeedDownloader::updateStarted, this, &FeedReader::feedUpdatesStarted);
|
connect(m_feedDownloader, &FeedDownloader::updateStarted, this, &FeedReader::feedUpdatesStarted);
|
||||||
connect(m_feedDownloader, &FeedDownloader::updateFinished, qApp->feedUpdateLock(), &Mutex::unlock);
|
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<Feed*>, feeds));
|
QMetaObject::invokeMethod(m_feedDownloader, "updateFeeds", Q_ARG(QList<Feed*>, feeds));
|
||||||
@ -231,8 +224,7 @@ void FeedReader::quit() {
|
|||||||
m_autoUpdateTimer->stop();
|
m_autoUpdateTimer->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close worker threads.
|
// Stop running updates.
|
||||||
if (m_feedDownloaderThread != nullptr && m_feedDownloaderThread->isRunning()) {
|
|
||||||
m_feedDownloader->stopRunningUpdate();
|
m_feedDownloader->stopRunningUpdate();
|
||||||
|
|
||||||
if (m_feedDownloader->isUpdateRunning()) {
|
if (m_feedDownloader->isUpdateRunning()) {
|
||||||
@ -242,15 +234,6 @@ void FeedReader::quit() {
|
|||||||
loop.exec();
|
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_dbCleanerThread != nullptr && m_dbCleanerThread->isRunning()) {
|
if (m_dbCleanerThread != nullptr && m_dbCleanerThread->isRunning()) {
|
||||||
qDebug("Quitting database cleaner thread.");
|
qDebug("Quitting database cleaner thread.");
|
||||||
m_dbCleanerThread->quit();
|
m_dbCleanerThread->quit();
|
||||||
|
@ -83,7 +83,6 @@ class FeedReader : public QObject {
|
|||||||
bool m_globalAutoUpdateEnabled;
|
bool m_globalAutoUpdateEnabled;
|
||||||
int m_globalAutoUpdateInitialInterval;
|
int m_globalAutoUpdateInitialInterval;
|
||||||
int m_globalAutoUpdateRemainingInterval;
|
int m_globalAutoUpdateRemainingInterval;
|
||||||
QThread* m_feedDownloaderThread;
|
|
||||||
FeedDownloader* m_feedDownloader;
|
FeedDownloader* m_feedDownloader;
|
||||||
QThread* m_dbCleanerThread;
|
QThread* m_dbCleanerThread;
|
||||||
DatabaseCleaner* m_dbCleaner;
|
DatabaseCleaner* m_dbCleaner;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user