diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-09-28 18:17:43 +0300 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2016-09-28 18:50:08 +0300 |
commit | 55c4bb98d72071fec5d98900865f24fe75922975 (patch) | |
tree | e276c7b7d689b8ee39b93daf5e871db42146478f /platform/qt/src | |
parent | 4ef66f36d40c9801b6683fe18b27367c89159541 (diff) | |
download | qtlocation-mapboxgl-55c4bb98d72071fec5d98900865f24fe75922975.tar.gz |
[Qt] Connect to finished() and error() signals from QNetworkReply
Qt macOS network manage implementation differs from linux in a sense
that some requests do not generate a finished() signal, but a error()
instead - that is not caught up by the network access manager. This
made QMapboxGL.styleURL utest hang for macOS.
Diffstat (limited to 'platform/qt/src')
-rw-r--r-- | platform/qt/src/http_file_source.cpp | 9 | ||||
-rw-r--r-- | platform/qt/src/http_file_source.hpp | 2 |
2 files changed, 6 insertions, 5 deletions
diff --git a/platform/qt/src/http_file_source.cpp b/platform/qt/src/http_file_source.cpp index 87948609df..61fa1ca612 100644 --- a/platform/qt/src/http_file_source.cpp +++ b/platform/qt/src/http_file_source.cpp @@ -34,8 +34,6 @@ HTTPFileSource::Impl::Impl() : m_manager(new QNetworkAccessManager(this)) if (m_ssl.caCertificates().isEmpty()) { mbgl::Log::Warning(mbgl::Event::HttpRequest, "Could not load list of certificate authorities"); } - - connect(m_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinish(QNetworkReply*))); } void HTTPFileSource::Impl::request(HTTPRequest* req) @@ -54,6 +52,8 @@ void HTTPFileSource::Impl::request(HTTPRequest* req) networkRequest.setSslConfiguration(m_ssl); data.first = m_manager->get(networkRequest); + connect(data.first, SIGNAL(finished()), this, SLOT(onReplyFinished())); + connect(data.first, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onReplyFinished())); } void HTTPFileSource::Impl::cancel(HTTPRequest* req) @@ -90,9 +90,10 @@ void HTTPFileSource::Impl::cancel(HTTPRequest* req) } } -void HTTPFileSource::Impl::replyFinish(QNetworkReply* reply) +void HTTPFileSource::Impl::onReplyFinished() { - const QUrl& url = reply->request().url(); + QNetworkReply* reply = qobject_cast<QNetworkReply *>(sender()); + const QUrl& url = reply->url(); auto it = m_pending.find(url); if (it == m_pending.end()) { diff --git a/platform/qt/src/http_file_source.hpp b/platform/qt/src/http_file_source.hpp index 777228d191..0776707069 100644 --- a/platform/qt/src/http_file_source.hpp +++ b/platform/qt/src/http_file_source.hpp @@ -28,7 +28,7 @@ public: void cancel(HTTPRequest *); public slots: - void replyFinish(QNetworkReply *); + void onReplyFinished(); private: QMap<QUrl, QPair<QNetworkReply *, QVector<HTTPRequest *>>> m_pending; |