forked from qt-creator/qt-creator
Move RSSFetcher into its own thread.
This should keep QNAM from blocking the startup in some network setups. Reviewed-by: dt Task-number: QTCREATORBUG-1250
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include <QtCore/QDebug>
|
||||
#include <QtCore/QSysInfo>
|
||||
#include <QtCore/QLocale>
|
||||
#include <QtCore/QEventLoop>
|
||||
#include <QtGui/QDesktopServices>
|
||||
#include <QtGui/QLineEdit>
|
||||
#include <QtNetwork/QNetworkReply>
|
||||
@@ -113,15 +114,22 @@ static const QString getOsString()
|
||||
return osString;
|
||||
}
|
||||
|
||||
RSSFetcher::RSSFetcher(int maxItems, QObject *parent)
|
||||
: QObject(parent), m_maxItems(maxItems), m_items(0)
|
||||
RSSFetcher::RSSFetcher(int maxItems)
|
||||
: QThread(0), m_maxItems(maxItems), m_items(0), m_networkAccessManager(0)
|
||||
{
|
||||
moveToThread(this);
|
||||
}
|
||||
|
||||
RSSFetcher::~RSSFetcher()
|
||||
{
|
||||
}
|
||||
|
||||
void RSSFetcher::run()
|
||||
{
|
||||
exec();
|
||||
delete m_networkAccessManager;
|
||||
}
|
||||
|
||||
void RSSFetcher::fetch(const QUrl &url)
|
||||
{
|
||||
QString agentStr = QString::fromLatin1("Qt-Creator/%1 (QHttp %2; %3; %4; %5 bit)")
|
||||
@@ -130,9 +138,9 @@ void RSSFetcher::fetch(const QUrl &url)
|
||||
.arg(QSysInfo::WordSize);
|
||||
QNetworkRequest req(url);
|
||||
req.setRawHeader("User-Agent", agentStr.toLatin1());
|
||||
if (m_networkAccessManager.isNull()) {
|
||||
m_networkAccessManager.reset(new QNetworkAccessManager);
|
||||
connect(m_networkAccessManager.data(), SIGNAL(finished(QNetworkReply*)),
|
||||
if (!m_networkAccessManager) {
|
||||
m_networkAccessManager = new QNetworkAccessManager;
|
||||
connect(m_networkAccessManager, SIGNAL(finished(QNetworkReply*)),
|
||||
SLOT(fetchingFinished(QNetworkReply*)));
|
||||
}
|
||||
m_networkAccessManager->get(req);
|
||||
|
||||
Reference in New Issue
Block a user