[qt] Use new FileSourceManager interface

This commit is contained in:
Alexander Shalamov
2019-10-08 16:15:37 +03:00
parent 77c86bc6b9
commit 1e6ad76516
3 changed files with 17 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
#pragma once
#include <mbgl/storage/http_file_source.hpp>
#include <mbgl/storage/resource.hpp>
#include <mbgl/util/async_request.hpp>
#include <QNetworkReply>

View File

@@ -15,8 +15,9 @@
#include <mbgl/math/log2.hpp>
#include <mbgl/math/minmax.hpp>
#include <mbgl/renderer/renderer.hpp>
#include <mbgl/storage/default_file_source.hpp>
#include <mbgl/storage/file_source_manager.hpp>
#include <mbgl/storage/network_status.hpp>
#include <mbgl/storage/online_file_source.hpp>
#include <mbgl/storage/resource_options.hpp>
#include <mbgl/style/conversion/filter.hpp>
#include <mbgl/style/conversion/geojson.hpp>
@@ -1737,13 +1738,21 @@ QMapboxGLPrivate::QMapboxGLPrivate(QMapboxGL *q, const QMapboxGLSettings &settin
resourceOptions);
if (settings.resourceTransform()) {
m_resourceTransform = std::make_unique<mbgl::Actor<mbgl::ResourceTransform>>(
m_resourceTransform = std::make_unique<mbgl::Actor<mbgl::ResourceTransform::TransformCallback>>(
*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<mbgl::DefaultFileSource>(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<mbgl::OnlineFileSource>(fs)->setResourceTransform(std::move(transform));
}
// Needs to be Queued to give time to discard redundant draw calls via the `renderQueued` flag.

View File

@@ -56,7 +56,7 @@ private:
std::unique_ptr<QMapboxGLMapObserver> m_mapObserver;
std::unique_ptr<QMapboxGLMapRenderer> m_mapRenderer;
std::unique_ptr<mbgl::Actor<mbgl::ResourceTransform>> m_resourceTransform;
std::unique_ptr<mbgl::Actor<mbgl::ResourceTransform::TransformCallback>> m_resourceTransform;
QMapboxGLSettings::GLContextMode m_mode;
qreal m_pixelRatio;