summaryrefslogtreecommitdiff
path: root/platform/android/src/geojson/multi_point.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/geojson/multi_point.cpp')
-rw-r--r--platform/android/src/geojson/multi_point.cpp26
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