diff --git a/src/core/feeddownloader.cpp b/src/core/feeddownloader.cpp index c6b9d3a95..38127dc09 100755 --- a/src/core/feeddownloader.cpp +++ b/src/core/feeddownloader.cpp @@ -26,9 +26,11 @@ FeedDownloader::FeedDownloader(QObject *parent) - : QObject(parent), m_results(FeedDownloadResults()), m_feedsUpdated(0), m_feedsToUpdate(0), + : QObject(parent), m_threadPool(new QThreadPool(this)), m_results(FeedDownloadResults()), m_feedsUpdated(0), m_feedsToUpdate(0), m_feedsUpdating(0), m_feedsTotalCount(0), m_stopUpdate(false) { qRegisterMetaType("FeedDownloadResults"); + + m_threadPool->setMaxThreadCount(6); } FeedDownloader::~FeedDownloader() { @@ -80,7 +82,7 @@ void FeedDownloader::updateFeeds(const QList &feeds) { connect(feeds.at(i), &Feed::messagesObtained, this, &FeedDownloader::oneFeedUpdateFinished, (Qt::ConnectionType) (Qt::UniqueConnection | Qt::AutoConnection)); - QThreadPool::globalInstance()->start(feeds.at(i)); + m_threadPool->start(feeds.at(i)); m_feedsUpdating++; m_feedsToUpdate--; @@ -88,6 +90,9 @@ void FeedDownloader::updateFeeds(const QList &feeds) { } void FeedDownloader::stopRunningUpdate() { + m_threadPool->clear(); + + // We want indicate that no more feeds will be updated in this queue. m_stopUpdate = true; } diff --git a/src/core/feeddownloader.h b/src/core/feeddownloader.h index 00e0f84e0..d4741a215 100755 --- a/src/core/feeddownloader.h +++ b/src/core/feeddownloader.h @@ -26,6 +26,7 @@ class Feed; +class QThreadPool; // Represents results of batch feed updates. class FeedDownloadResults { @@ -88,6 +89,7 @@ class FeedDownloader : public QObject { private: void finalizeUpdate(); + QThreadPool *m_threadPool; FeedDownloadResults m_results; int m_feedsUpdated;