From 1e6ad7651650d39cdfae03bacd74144d25fbbf23 Mon Sep 17 00:00:00 2001 From: Alexander Shalamov Date: Tue, 8 Oct 2019 16:15:37 +0300 Subject: [PATCH] [qt] Use new FileSourceManager interface --- platform/qt/src/http_request.hpp | 1 + platform/qt/src/qmapboxgl.cpp | 21 +++++++++++++++------ platform/qt/src/qmapboxgl_p.hpp | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/platform/qt/src/http_request.hpp b/platform/qt/src/http_request.hpp index b4d476d58..2e760fc8d 100644 --- a/platform/qt/src/http_request.hpp +++ b/platform/qt/src/http_request.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include diff --git a/platform/qt/src/qmapboxgl.cpp b/platform/qt/src/qmapboxgl.cpp index a4cadf810..fd72e8cf0 100644 --- a/platform/qt/src/qmapboxgl.cpp +++ b/platform/qt/src/qmapboxgl.cpp @@ -15,8 +15,9 @@ #include #include #include -#include +#include #include +#include #include #include #include @@ -1737,13 +1738,21 @@ QMapboxGLPrivate::QMapboxGLPrivate(QMapboxGL *q, const QMapboxGLSettings &settin resourceOptions); if (settings.resourceTransform()) { - m_resourceTransform = std::make_unique>( + m_resourceTransform = std::make_unique>( *mbgl::Scheduler::GetCurrent(), - [callback = settings.resourceTransform()](mbgl::Resource::Kind, const std::string &url_) -> std::string { - return callback(std::move(url_)); + [callback = settings.resourceTransform()]( + mbgl::Resource::Kind, const std::string &url_, mbgl::ResourceTransform::FinishedCallback onFinished) { + onFinished(callback(std::move(url_))); }); - auto fs = mbgl::FileSource::getSharedFileSource(resourceOptions); - std::static_pointer_cast(fs)->setResourceTransform(m_resourceTransform->self()); + + mbgl::ResourceTransform transform{[actorRef = m_resourceTransform->self()]( + mbgl::Resource::Kind kind, + const std::string &url, + mbgl::ResourceTransform::FinishedCallback onFinished) { + actorRef.invoke(&mbgl::ResourceTransform::TransformCallback::operator(), kind, url, std::move(onFinished)); + }}; + auto fs = mbgl::FileSourceManager::get()->getFileSource(mbgl::FileSourceType::Network, resourceOptions); + std::static_pointer_cast(fs)->setResourceTransform(std::move(transform)); } // Needs to be Queued to give time to discard redundant draw calls via the `renderQueued` flag. diff --git a/platform/qt/src/qmapboxgl_p.hpp b/platform/qt/src/qmapboxgl_p.hpp index 7f7040d7a..ec45d89c7 100644 --- a/platform/qt/src/qmapboxgl_p.hpp +++ b/platform/qt/src/qmapboxgl_p.hpp @@ -56,7 +56,7 @@ private: std::unique_ptr m_mapObserver; std::unique_ptr m_mapRenderer; - std::unique_ptr> m_resourceTransform; + std::unique_ptr> m_resourceTransform; QMapboxGLSettings::GLContextMode m_mode; qreal m_pixelRatio;