diff options
author | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-06-22 18:01:15 +0300 |
---|---|---|
committer | Thiago Marcos P. Santos <tmpsantos@gmail.com> | 2017-06-26 16:32:21 +0300 |
commit | aefa8cb5512a8db401f0eb7568cfc64cecb6b30a (patch) | |
tree | 4e9b5901176399e20b028ce8225dd95a9d331a49 /platform/android/src/file_source.cpp | |
parent | ea34cb5725815dbb5075205b01407a00329a3542 (diff) | |
download | qtlocation-mapboxgl-aefa8cb5512a8db401f0eb7568cfc64cecb6b30a.tar.gz |
[android] Use ResourceTransform for setting URL transform callbacks
Diffstat (limited to 'platform/android/src/file_source.cpp')
-rw-r--r-- | platform/android/src/file_source.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/platform/android/src/file_source.cpp b/platform/android/src/file_source.cpp index 16c09b7b52..5d19c506bc 100644 --- a/platform/android/src/file_source.cpp +++ b/platform/android/src/file_source.cpp @@ -1,6 +1,9 @@ #include "file_source.hpp" +#include <mbgl/actor/actor.hpp> +#include <mbgl/storage/resource_transform.hpp> #include <mbgl/util/logging.hpp> +#include <mbgl/util/run_loop.hpp> #include "asset_manager_file_source.hpp" #include "jni/generic_global_ref_deleter.hpp" @@ -42,21 +45,22 @@ void FileSource::setAPIBaseUrl(jni::JNIEnv& env, jni::String url) { void FileSource::setResourceTransform(jni::JNIEnv& env, jni::Object<FileSource::ResourceTransformCallback> transformCallback) { if (transformCallback) { - // Launch transformCallback - fileSource->setResourceTransform([ + resourceTransform = std::make_unique<Actor<ResourceTransform>>(*util::RunLoop::Get(), // Capture the ResourceTransformCallback object as a managed global into // the lambda. It is released automatically when we're setting a new ResourceTransform in // a subsequent call. // Note: we're converting it to shared_ptr because this lambda is converted to a std::function, // which requires copyability of its captured variables. - callback = std::shared_ptr<jni::jobject>(transformCallback.NewGlobalRef(env).release()->Get(), GenericGlobalRefDeleter()) - ](mbgl::Resource::Kind kind, std::string&& url_) { - android::UniqueEnv _env = android::AttachEnv(); - return FileSource::ResourceTransformCallback::onURL(*_env, jni::Object<FileSource::ResourceTransformCallback>(*callback), int(kind), url_); - }); + [callback = std::shared_ptr<jni::jobject>(transformCallback.NewGlobalRef(env).release()->Get(), GenericGlobalRefDeleter())] + (mbgl::Resource::Kind kind, const std::string&& url_) { + android::UniqueEnv _env = android::AttachEnv(); + return FileSource::ResourceTransformCallback::onURL(*_env, jni::Object<FileSource::ResourceTransformCallback>(*callback), int(kind), url_); + }); + fileSource->setResourceTransform(resourceTransform->self()); } else { // Reset the callback - fileSource->setResourceTransform(nullptr); + resourceTransform.reset(); + fileSource->setResourceTransform({}); } } @@ -106,4 +110,4 @@ std::string FileSource::ResourceTransformCallback::onURL(jni::JNIEnv& env, jni:: } } // namespace android -} // namespace mbgl
\ No newline at end of file +} // namespace mbgl |