1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-03-16 08:29:15 +01:00

OP-1453 - Modify to get network access manager to remove itself once we

receive a response. Also check to see if we can access the network
before connection signals/slots. If the network isn't accessible, just
remove the network access manager instance.
This commit is contained in:
dwillis 2014-08-25 23:53:22 +01:00
parent b3f1c0281b
commit 3c3c08d2d7

View File

@ -63,7 +63,6 @@ struct WelcomeModePrivate {
WelcomeModePrivate(); WelcomeModePrivate();
QQuickView *quickView; QQuickView *quickView;
QNetworkAccessManager* networkAccess;
}; };
WelcomeModePrivate::WelcomeModePrivate() WelcomeModePrivate::WelcomeModePrivate()
@ -81,20 +80,28 @@ WelcomeMode::WelcomeMode() :
m_d->quickView->setSource(QUrl("qrc:/welcome/qml/main.qml")); m_d->quickView->setSource(QUrl("qrc:/welcome/qml/main.qml"));
m_container = NULL; m_container = NULL;
m_d->networkAccess = new QNetworkAccessManager; QNetworkAccessManager* networkAccessManager = new QNetworkAccessManager;
m_d->networkAccess->get(QNetworkRequest(QUrl("http://www.openpilot.org/opver"))); // Only attempt to request our version info if the network is accessible
if(networkAccessManager->networkAccessible() == QNetworkAccessManager::Accessible)
{
connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkResponseReady(QNetworkReply*)));
connect(m_d->networkAccess, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkResponseReady(QNetworkReply*))); // This will delete the network access manager instance when we're done
connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)), networkAccessManager, SLOT(deleteLater()));
networkAccessManager->get(QNetworkRequest(QUrl("http://www.openpilot.org/opver")));
}
else
{
// No network, can delete this now as we don't need it.
delete networkAccessManager;
}
} }
WelcomeMode::~WelcomeMode() WelcomeMode::~WelcomeMode()
{ {
delete m_d->quickView; delete m_d->quickView;
// This may or may not have been scheduled for deletion elsewhere. Should
// be safe to call this again if it has already been scheduled.
m_d->networkAccess->deleteLater();
delete m_d; delete m_d;
} }
@ -159,7 +166,6 @@ void WelcomeMode::networkResponseReady(QNetworkReply* reply)
version = version.trimmed(); version = version.trimmed();
reply->deleteLater(); reply->deleteLater();
m_d->networkAccess->deleteLater();
if(version != VersionInfo::tagOrHash8()) if(version != VersionInfo::tagOrHash8())
{ {