From 3c3c08d2d74f7d7bddbcaae7472bd463586e3e4b Mon Sep 17 00:00:00 2001 From: dwillis Date: Mon, 25 Aug 2014 23:53:22 +0100 Subject: [PATCH] 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. --- .../src/plugins/welcome/welcomemode.cpp | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp b/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp index ad9fa565e..090a77d85 100644 --- a/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp +++ b/ground/openpilotgcs/src/plugins/welcome/welcomemode.cpp @@ -63,7 +63,6 @@ struct WelcomeModePrivate { WelcomeModePrivate(); QQuickView *quickView; - QNetworkAccessManager* networkAccess; }; WelcomeModePrivate::WelcomeModePrivate() @@ -81,20 +80,28 @@ WelcomeMode::WelcomeMode() : m_d->quickView->setSource(QUrl("qrc:/welcome/qml/main.qml")); 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() { 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; } @@ -159,7 +166,6 @@ void WelcomeMode::networkResponseReady(QNetworkReply* reply) version = version.trimmed(); reply->deleteLater(); - m_d->networkAccess->deleteLater(); if(version != VersionInfo::tagOrHash8()) {