diff options
Diffstat (limited to 'platform/android/src/geojson/multi_point.cpp')
-rw-r--r-- | platform/android/src/geojson/multi_point.cpp | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/platform/android/src/geojson/multi_point.cpp b/platform/android/src/geojson/multi_point.cpp index 6f62541209..d530ef721f 100644 --- a/platform/android/src/geojson/multi_point.cpp +++ b/platform/android/src/geojson/multi_point.cpp @@ -8,40 +8,34 @@ namespace mbgl { namespace android { namespace geojson { -jni::Object<MultiPoint> MultiPoint::New(JNIEnv& env, const mbgl::MultiPoint<double>& multiPoint) { - auto jList = asPointsList(env, multiPoint); - +jni::Local<jni::Object<MultiPoint>> MultiPoint::New(JNIEnv& env, const mbgl::MultiPoint<double>& multiPoint) { + static auto& javaClass = jni::Class<MultiPoint>::Singleton(env); static auto method = javaClass.GetStaticMethod<jni::Object<MultiPoint>(jni::Object<java::util::List>)>(env, "fromLngLats"); - auto jMultiPoint = javaClass.Call(env, method, jList); - jni::DeleteLocalRef(env, jList); - return jMultiPoint; + return javaClass.Call(env, method, asPointsList(env, multiPoint)); } -mapbox::geojson::multi_point MultiPoint::convert(jni::JNIEnv &env, jni::Object<MultiPoint> jMultiPoint) { +mapbox::geojson::multi_point MultiPoint::convert(jni::JNIEnv& env, const jni::Object<MultiPoint>& jMultiPoint) { mapbox::geojson::multi_point multiPoint; if (jMultiPoint) { - auto jPointListsList = MultiPoint::coordinates(env, jMultiPoint); - multiPoint = convertExplicit<mapbox::geojson::multi_point>(LineString::convert(env, jPointListsList)); - jni::DeleteLocalRef(env, jPointListsList); + multiPoint = convertExplicit<mapbox::geojson::multi_point>( + LineString::convert(env, MultiPoint::coordinates(env, jMultiPoint))); } return multiPoint; } -jni::Object<java::util::List> MultiPoint::coordinates(jni::JNIEnv &env, jni::Object<MultiPoint> jMultiPoint) { - static auto method = MultiPoint::javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates"); +jni::Local<jni::Object<java::util::List>> MultiPoint::coordinates(jni::JNIEnv& env, const jni::Object<MultiPoint>& jMultiPoint) { + static auto& javaClass = jni::Class<MultiPoint>::Singleton(env); + static auto method = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates"); return jMultiPoint.Call(env, method); } void MultiPoint::registerNative(jni::JNIEnv &env) { - // Lookup the class - javaClass = *jni::Class<MultiPoint>::Find(env).NewGlobalRef(env).release(); + jni::Class<MultiPoint>::Singleton(env); } -jni::Class<MultiPoint> MultiPoint::javaClass; - } // namespace geojson } // namespace android } // namespace mbgl
\ No newline at end of file |