diff options
Diffstat (limited to 'platform/android/src/geojson/multi_line_string.cpp')
-rw-r--r-- | platform/android/src/geojson/multi_line_string.cpp | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/platform/android/src/geojson/multi_line_string.cpp b/platform/android/src/geojson/multi_line_string.cpp index 4a6ea37dd1..1aaf53c01f 100644 --- a/platform/android/src/geojson/multi_line_string.cpp +++ b/platform/android/src/geojson/multi_line_string.cpp @@ -7,29 +7,24 @@ namespace mbgl { namespace android { namespace geojson { -jni::Object<MultiLineString> MultiLineString::New(jni::JNIEnv& env, const mbgl::MultiLineString<double>& multiLineString) { - auto jList = asPointsListsList(env, multiLineString); - +jni::Local<jni::Object<MultiLineString>> MultiLineString::New(jni::JNIEnv& env, const mbgl::MultiLineString<double>& multiLineString) { + static auto& javaClass = jni::Class<MultiLineString>::Singleton(env); static auto method = javaClass.GetStaticMethod<jni::Object<MultiLineString> (jni::Object<java::util::List>)>(env, "fromLngLats"); - auto jMultiLineString = javaClass.Call(env, method, jList); - jni::DeleteLocalRef(env, jList); - return jMultiLineString; + return javaClass.Call(env, method, asPointsListsList(env, multiLineString)); } -mapbox::geojson::multi_line_string MultiLineString::convert(jni::JNIEnv &env, jni::Object<MultiLineString> jMultiLineString) { +mapbox::geojson::multi_line_string MultiLineString::convert(jni::JNIEnv &env, const jni::Object<MultiLineString>& jMultiLineString) { mapbox::geojson::multi_line_string multiLineString; if (jMultiLineString) { - auto jPointListsList = MultiLineString::coordinates(env, jMultiLineString); - multiLineString = MultiLineString::convert(env, jPointListsList); - jni::DeleteLocalRef(env, jPointListsList); + multiLineString = MultiLineString::convert(env, MultiLineString::coordinates(env, jMultiLineString)); } return multiLineString; } -mapbox::geojson::multi_line_string MultiLineString::convert(jni::JNIEnv &env, jni::Object<java::util::List/*<java::util::List<Point>>*/> jPointListsList) { +mapbox::geojson::multi_line_string MultiLineString::convert(jni::JNIEnv &env, const jni::Object<java::util::List/*<java::util::List<Point>>*/>& jPointListsList) { mapbox::geojson::multi_line_string multiLineString; if (jPointListsList) { @@ -39,29 +34,23 @@ mapbox::geojson::multi_line_string MultiLineString::convert(jni::JNIEnv &env, jn multiLineString.reserve(size); for (std::size_t i = 0; i < size; i++) { - auto jPointsList = jPositionListsArray.Get(env, i); - multiLineString.push_back(LineString::convert(env, jPointsList)); - jni::DeleteLocalRef(env, jPointsList); + multiLineString.push_back(LineString::convert(env, jPositionListsArray.Get(env, i))); } - - jni::DeleteLocalRef(env, jPositionListsArray); } return multiLineString; } -jni::Object<java::util::List> MultiLineString::coordinates(jni::JNIEnv &env, jni::Object<MultiLineString> jLineString) { - static auto method = MultiLineString::javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates"); +jni::Local<jni::Object<java::util::List>> MultiLineString::coordinates(jni::JNIEnv &env, const jni::Object<MultiLineString>& jLineString) { + static auto& javaClass = jni::Class<MultiLineString>::Singleton(env); + static auto method = javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates"); return jLineString.Call(env, method); } void MultiLineString::registerNative(jni::JNIEnv &env) { - // Lookup the class - javaClass = *jni::Class<MultiLineString>::Find(env).NewGlobalRef(env).release(); + jni::Class<MultiLineString>::Singleton(env); } -jni::Class<MultiLineString> MultiLineString::javaClass; - } // namespace geojson } // namespace android } // namespace mbgl
\ No newline at end of file |