diff options
Diffstat (limited to 'platform/android/src/geometry/lat_lng_quad.cpp')
-rw-r--r-- | platform/android/src/geometry/lat_lng_quad.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/platform/android/src/geometry/lat_lng_quad.cpp b/platform/android/src/geometry/lat_lng_quad.cpp index 2b36139e18..1a1e49048b 100644 --- a/platform/android/src/geometry/lat_lng_quad.cpp +++ b/platform/android/src/geometry/lat_lng_quad.cpp @@ -4,20 +4,22 @@ namespace mbgl { namespace android { -jni::Object<LatLngQuad> LatLngQuad::New(jni::JNIEnv& env, std::array<mbgl::LatLng, 4> coordinates) { - static auto quadConstructor = LatLngQuad::javaClass.GetConstructor<jni::Object<LatLng>, jni::Object<LatLng>, jni::Object<LatLng>, jni::Object<LatLng>>(env); - return LatLngQuad::javaClass.New(env, quadConstructor, +jni::Local<jni::Object<LatLngQuad>> LatLngQuad::New(jni::JNIEnv& env, std::array<mbgl::LatLng, 4> coordinates) { + static auto& javaClass = jni::Class<LatLngQuad>::Singleton(env); + static auto quadConstructor = javaClass.GetConstructor<jni::Object<LatLng>, jni::Object<LatLng>, jni::Object<LatLng>, jni::Object<LatLng>>(env); + return javaClass.New(env, quadConstructor, LatLng::New(env, coordinates[0]), LatLng::New(env, coordinates[1]), LatLng::New(env, coordinates[2]), LatLng::New(env, coordinates[3])); } -std::array<mbgl::LatLng, 4> LatLngQuad::getLatLngArray(jni::JNIEnv& env, jni::Object<LatLngQuad> quad) { - static auto topLeftField = LatLngQuad::javaClass.GetField <jni::Object<LatLng>>(env, "topLeft"); - static auto topRightField = LatLngQuad::javaClass.GetField <jni::Object<LatLng>>(env, "topRight"); - static auto bottomRightField = LatLngQuad::javaClass.GetField <jni::Object<LatLng>>(env, "bottomRight"); - static auto bottomLeftField = LatLngQuad::javaClass.GetField <jni::Object<LatLng>>(env, "bottomLeft"); +std::array<mbgl::LatLng, 4> LatLngQuad::getLatLngArray(jni::JNIEnv& env, const jni::Object<LatLngQuad>& quad) { + static auto& javaClass = jni::Class<LatLngQuad>::Singleton(env); + static auto topLeftField = javaClass.GetField <jni::Object<LatLng>>(env, "topLeft"); + static auto topRightField = javaClass.GetField <jni::Object<LatLng>>(env, "topRight"); + static auto bottomRightField = javaClass.GetField <jni::Object<LatLng>>(env, "bottomRight"); + static auto bottomLeftField = javaClass.GetField <jni::Object<LatLng>>(env, "bottomLeft"); return std::array < mbgl::LatLng, 4 > {{ LatLng::getLatLng(env, quad.Get(env, topLeftField)), @@ -28,12 +30,8 @@ std::array<mbgl::LatLng, 4> LatLngQuad::getLatLngArray(jni::JNIEnv& env, jni::Ob } void LatLngQuad::registerNative(jni::JNIEnv& env) { - // Lookup the class - LatLngQuad::javaClass = *jni::Class<LatLngQuad>::Find(env).NewGlobalRef(env).release(); + jni::Class<LatLngQuad>::Singleton(env); } -jni::Class<LatLngQuad> LatLngQuad::javaClass; - - } // namespace android } // namespace mbgl
\ No newline at end of file |