diff options
author | Wilhelm Berg <wb@BergWerk-GIS.at> | 2018-09-12 15:07:57 +0200 |
---|---|---|
committer | Wilhelm Berg <wb@BergWerk-GIS.at> | 2018-09-12 15:07:57 +0200 |
commit | 98b34cb0dbf5c50d7f319724c93021418140b15f (patch) | |
tree | 11cd51f86b5c672dda6bfe087f40f77df1553971 /platform/android/src/map/image.cpp | |
parent | ee17d79f9420eb859303d977955454dacc470db6 (diff) | |
parent | 079ba0209ed383c15123902f0810e658c2b0abf4 (diff) | |
download | qtlocation-mapboxgl-upstream/bwg-vs2017.tar.gz |
Merge remote-tracking branch 'origin' into bwg-vs2017upstream/bwg-vs2017
# Conflicts:
# cmake/mason-dependencies.cmake
Diffstat (limited to 'platform/android/src/map/image.cpp')
-rw-r--r-- | platform/android/src/map/image.cpp | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/platform/android/src/map/image.cpp b/platform/android/src/map/image.cpp index ce89e22d7a..a91cc938ed 100644 --- a/platform/android/src/map/image.cpp +++ b/platform/android/src/map/image.cpp @@ -5,24 +5,23 @@ namespace mbgl { namespace android { -mbgl::style::Image Image::getImage(jni::JNIEnv& env, jni::Object<Image> image) { - static auto widthField = Image::javaClass.GetField<jni::jint>(env, "width"); - static auto heightField = Image::javaClass.GetField<jni::jint>(env, "height"); - static auto pixelRatioField = Image::javaClass.GetField<jni::jfloat>(env, "pixelRatio"); - static auto bufferField = Image::javaClass.GetField<jni::Array<jbyte>>(env, "buffer"); - static auto nameField = Image::javaClass.GetField<jni::String>(env, "name"); - static auto sdfField = Image::javaClass.GetField<jni::jboolean>(env, "sdf"); +mbgl::style::Image Image::getImage(jni::JNIEnv& env, const jni::Object<Image>& image) { + static auto& javaClass = jni::Class<Image>::Singleton(env); + static auto widthField = javaClass.GetField<jni::jint>(env, "width"); + static auto heightField = javaClass.GetField<jni::jint>(env, "height"); + static auto pixelRatioField = javaClass.GetField<jni::jfloat>(env, "pixelRatio"); + static auto bufferField = javaClass.GetField<jni::Array<jbyte>>(env, "buffer"); + static auto nameField = javaClass.GetField<jni::String>(env, "name"); + static auto sdfField = javaClass.GetField<jni::jboolean>(env, "sdf"); auto height = image.Get(env, heightField); auto width = image.Get(env, widthField); auto pixelRatio = image.Get(env, pixelRatioField); auto pixels = image.Get(env, bufferField); - auto jName = image.Get(env, nameField); - auto name = jni::Make<std::string>(env, jName); + auto name = jni::Make<std::string>(env, image.Get(env, nameField)); auto sdf = (bool) image.Get(env, sdfField); - jni::DeleteLocalRef(env, jName); - jni::NullCheck(env, &pixels); + jni::NullCheck(env, pixels.get()); std::size_t size = pixels.Length(env); mbgl::PremultipliedImage premultipliedImage({ static_cast<uint32_t>(width), static_cast<uint32_t>(height) }); @@ -31,18 +30,12 @@ mbgl::style::Image Image::getImage(jni::JNIEnv& env, jni::Object<Image> image) { } jni::GetArrayRegion(env, *pixels, 0, size, reinterpret_cast<jbyte*>(premultipliedImage.data.get())); - jni::DeleteLocalRef(env, pixels); return mbgl::style::Image {name, std::move(premultipliedImage), pixelRatio, sdf}; } void Image::registerNative(jni::JNIEnv &env) { - // Lookup the class - Image::javaClass = *jni::Class<Image>::Find(env).NewGlobalRef(env).release(); + jni::Class<Image>::Singleton(env); } -jni::Class<Image> Image::javaClass; - - } // namespace android } // namespace mb - |