diff options
Diffstat (limited to 'platform/android/src/style/layers')
26 files changed, 65 insertions, 109 deletions
diff --git a/platform/android/src/style/layers/background_layer.cpp b/platform/android/src/style/layers/background_layer.cpp index a8f013b230..00c348b232 100644 --- a/platform/android/src/style/layers/background_layer.cpp +++ b/platform/android/src/style/layers/background_layer.cpp @@ -93,22 +93,21 @@ namespace android { } - jni::Class<BackgroundLayer> BackgroundLayer::javaClass; - jni::jobject* BackgroundLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = BackgroundLayer::javaClass.template GetConstructor<jni::jlong>(env); - return BackgroundLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<BackgroundLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void BackgroundLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - BackgroundLayer::javaClass = *jni::Class<BackgroundLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<BackgroundLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<BackgroundLayer>( - env, BackgroundLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<BackgroundLayer, JNIEnv&, jni::String>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/background_layer.hpp b/platform/android/src/style/layers/background_layer.hpp index 95555a2d78..3b7f03ddb6 100644 --- a/platform/android/src/style/layers/background_layer.hpp +++ b/platform/android/src/style/layers/background_layer.hpp @@ -15,8 +15,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/BackgroundLayer"; }; - static jni::Class<BackgroundLayer> javaClass; - static void registerNative(jni::JNIEnv&); BackgroundLayer(jni::JNIEnv&, jni::String); diff --git a/platform/android/src/style/layers/circle_layer.cpp b/platform/android/src/style/layers/circle_layer.cpp index 4c7f69e956..47a492dd43 100644 --- a/platform/android/src/style/layers/circle_layer.cpp +++ b/platform/android/src/style/layers/circle_layer.cpp @@ -206,22 +206,21 @@ namespace android { } - jni::Class<CircleLayer> CircleLayer::javaClass; - jni::jobject* CircleLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = CircleLayer::javaClass.template GetConstructor<jni::jlong>(env); - return CircleLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<CircleLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void CircleLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - CircleLayer::javaClass = *jni::Class<CircleLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<CircleLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<CircleLayer>( - env, CircleLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<CircleLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/circle_layer.hpp b/platform/android/src/style/layers/circle_layer.hpp index 9d323e92bb..03063b1fc1 100644 --- a/platform/android/src/style/layers/circle_layer.hpp +++ b/platform/android/src/style/layers/circle_layer.hpp @@ -15,8 +15,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/CircleLayer"; }; - static jni::Class<CircleLayer> javaClass; - static void registerNative(jni::JNIEnv&); CircleLayer(jni::JNIEnv&, jni::String, jni::String); diff --git a/platform/android/src/style/layers/custom_layer.cpp b/platform/android/src/style/layers/custom_layer.cpp index 61e74a9cf5..c0dcc24f06 100644 --- a/platform/android/src/style/layers/custom_layer.cpp +++ b/platform/android/src/style/layers/custom_layer.cpp @@ -33,22 +33,21 @@ namespace android { } } - jni::Class<CustomLayer> CustomLayer::javaClass; - jni::jobject* CustomLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = CustomLayer::javaClass.template GetConstructor<jni::jlong>(env); - return CustomLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<CustomLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void CustomLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - CustomLayer::javaClass = *jni::Class<CustomLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<CustomLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<CustomLayer>( - env, CustomLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<CustomLayer, JNIEnv&, jni::String, jni::jlong>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/custom_layer.hpp b/platform/android/src/style/layers/custom_layer.hpp index 7eb649d923..75e1957717 100644 --- a/platform/android/src/style/layers/custom_layer.hpp +++ b/platform/android/src/style/layers/custom_layer.hpp @@ -9,19 +9,13 @@ namespace android { class CustomLayer : public Layer { public: - static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/CustomLayer"; }; - static jni::Class<CustomLayer> javaClass; - static void registerNative(jni::JNIEnv&); CustomLayer(jni::JNIEnv&, jni::String, jni::jlong); - CustomLayer(mbgl::Map&, mbgl::style::CustomLayer&); - CustomLayer(mbgl::Map&, std::unique_ptr<mbgl::style::CustomLayer>); - ~CustomLayer(); void update(jni::JNIEnv&); diff --git a/platform/android/src/style/layers/fill_extrusion_layer.cpp b/platform/android/src/style/layers/fill_extrusion_layer.cpp index 492e1729b9..6c6a0bef5a 100644 --- a/platform/android/src/style/layers/fill_extrusion_layer.cpp +++ b/platform/android/src/style/layers/fill_extrusion_layer.cpp @@ -156,22 +156,21 @@ namespace android { } - jni::Class<FillExtrusionLayer> FillExtrusionLayer::javaClass; - jni::jobject* FillExtrusionLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = FillExtrusionLayer::javaClass.template GetConstructor<jni::jlong>(env); - return FillExtrusionLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<FillExtrusionLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void FillExtrusionLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - FillExtrusionLayer::javaClass = *jni::Class<FillExtrusionLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<FillExtrusionLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<FillExtrusionLayer>( - env, FillExtrusionLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<FillExtrusionLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/fill_extrusion_layer.hpp b/platform/android/src/style/layers/fill_extrusion_layer.hpp index 11a74bc8ef..233c3cc334 100644 --- a/platform/android/src/style/layers/fill_extrusion_layer.hpp +++ b/platform/android/src/style/layers/fill_extrusion_layer.hpp @@ -15,8 +15,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/FillExtrusionLayer"; }; - static jni::Class<FillExtrusionLayer> javaClass; - static void registerNative(jni::JNIEnv&); FillExtrusionLayer(jni::JNIEnv&, jni::String, jni::String); diff --git a/platform/android/src/style/layers/fill_layer.cpp b/platform/android/src/style/layers/fill_layer.cpp index f4cddc8858..5182c546c8 100644 --- a/platform/android/src/style/layers/fill_layer.cpp +++ b/platform/android/src/style/layers/fill_layer.cpp @@ -143,22 +143,21 @@ namespace android { } - jni::Class<FillLayer> FillLayer::javaClass; - jni::jobject* FillLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = FillLayer::javaClass.template GetConstructor<jni::jlong>(env); - return FillLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<FillLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void FillLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - FillLayer::javaClass = *jni::Class<FillLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<FillLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<FillLayer>( - env, FillLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<FillLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/fill_layer.hpp b/platform/android/src/style/layers/fill_layer.hpp index a773cf785b..db1fee1667 100644 --- a/platform/android/src/style/layers/fill_layer.hpp +++ b/platform/android/src/style/layers/fill_layer.hpp @@ -15,8 +15,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/FillLayer"; }; - static jni::Class<FillLayer> javaClass; - static void registerNative(jni::JNIEnv&); FillLayer(jni::JNIEnv&, jni::String, jni::String); diff --git a/platform/android/src/style/layers/heatmap_layer.cpp b/platform/android/src/style/layers/heatmap_layer.cpp index b3d90faab7..e83d92873f 100644 --- a/platform/android/src/style/layers/heatmap_layer.cpp +++ b/platform/android/src/style/layers/heatmap_layer.cpp @@ -109,22 +109,21 @@ namespace android { } - jni::Class<HeatmapLayer> HeatmapLayer::javaClass; - jni::jobject* HeatmapLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = HeatmapLayer::javaClass.template GetConstructor<jni::jlong>(env); - return HeatmapLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<HeatmapLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void HeatmapLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - HeatmapLayer::javaClass = *jni::Class<HeatmapLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<HeatmapLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<HeatmapLayer>( - env, HeatmapLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<HeatmapLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/heatmap_layer.hpp b/platform/android/src/style/layers/heatmap_layer.hpp index 9e8908b062..00ab27d854 100644 --- a/platform/android/src/style/layers/heatmap_layer.hpp +++ b/platform/android/src/style/layers/heatmap_layer.hpp @@ -15,8 +15,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/HeatmapLayer"; }; - static jni::Class<HeatmapLayer> javaClass; - static void registerNative(jni::JNIEnv&); HeatmapLayer(jni::JNIEnv&, jni::String, jni::String); diff --git a/platform/android/src/style/layers/hillshade_layer.cpp b/platform/android/src/style/layers/hillshade_layer.cpp index d98e3ee074..b6409b3b3e 100644 --- a/platform/android/src/style/layers/hillshade_layer.cpp +++ b/platform/android/src/style/layers/hillshade_layer.cpp @@ -124,22 +124,21 @@ namespace android { } - jni::Class<HillshadeLayer> HillshadeLayer::javaClass; - jni::jobject* HillshadeLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = HillshadeLayer::javaClass.template GetConstructor<jni::jlong>(env); - return HillshadeLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<HillshadeLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void HillshadeLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - HillshadeLayer::javaClass = *jni::Class<HillshadeLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<HillshadeLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<HillshadeLayer>( - env, HillshadeLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<HillshadeLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/hillshade_layer.hpp b/platform/android/src/style/layers/hillshade_layer.hpp index 4b68251775..f824698058 100644 --- a/platform/android/src/style/layers/hillshade_layer.hpp +++ b/platform/android/src/style/layers/hillshade_layer.hpp @@ -15,8 +15,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/HillshadeLayer"; }; - static jni::Class<HillshadeLayer> javaClass; - static void registerNative(jni::JNIEnv&); HillshadeLayer(jni::JNIEnv&, jni::String, jni::String); diff --git a/platform/android/src/style/layers/layer.cpp b/platform/android/src/style/layers/layer.cpp index 48e09674e8..fe4fb9aeb6 100644 --- a/platform/android/src/style/layers/layer.cpp +++ b/platform/android/src/style/layers/layer.cpp @@ -93,7 +93,7 @@ namespace android { void Layer::setLayoutProperty(jni::JNIEnv& env, jni::String jname, jni::Object<> jvalue) { // Convert and set property - optional<mbgl::style::conversion::Error> error = layer.setLayoutProperty(jni::Make<std::string>(env, jname), Value(env, jvalue)); + optional<mbgl::style::conversion::Error> error = layer.setLayoutProperty(jni::Make<std::string>(env, jname), Value(env, jni::SeizeLocal(env, std::move(jvalue)))); if (error) { mbgl::Log::Error(mbgl::Event::JNI, "Error setting property: " + jni::Make<std::string>(env, jname) + " " + error->message); return; @@ -102,7 +102,7 @@ namespace android { void Layer::setPaintProperty(jni::JNIEnv& env, jni::String jname, jni::Object<> jvalue) { // Convert and set property - optional<mbgl::style::conversion::Error> error = layer.setPaintProperty(jni::Make<std::string>(env, jname), Value(env, jvalue)); + optional<mbgl::style::conversion::Error> error = layer.setPaintProperty(jni::Make<std::string>(env, jname), Value(env, jni::SeizeLocal(env, std::move(jvalue)))); if (error) { mbgl::Log::Error(mbgl::Event::JNI, "Error setting property: " + jni::Make<std::string>(env, jname) + " " + error->message); return; @@ -128,7 +128,7 @@ namespace android { using namespace mbgl::style::conversion; Error error; - optional<Filter> converted = convert<Filter>(Value(env, jfilter), error); + optional<Filter> converted = convert<Filter>(Value(env, jni::SeizeLocal(env, std::move(jfilter))), error); if (!converted) { mbgl::Log::Error(mbgl::Event::JNI, "Error setting filter: " + error.message); return; @@ -246,16 +246,14 @@ namespace android { return jni::Object<jni::ObjectTag>(*convert<jni::jobject*>(env, layer.getVisibility())); } - jni::Class<Layer> Layer::javaClass; - void Layer::registerNative(jni::JNIEnv& env) { // Lookup the class - Layer::javaClass = *jni::Class<Layer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<Layer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer - jni::RegisterNativePeer<Layer>(env, Layer::javaClass, "nativePtr", + jni::RegisterNativePeer<Layer>(env, javaClass, "nativePtr", METHOD(&Layer::getId, "nativeGetId"), METHOD(&Layer::setLayoutProperty, "nativeSetLayoutProperty"), METHOD(&Layer::setPaintProperty, "nativeSetPaintProperty"), diff --git a/platform/android/src/style/layers/layer.cpp.ejs b/platform/android/src/style/layers/layer.cpp.ejs index b08f0ec4dc..7dbb031b25 100644 --- a/platform/android/src/style/layers/layer.cpp.ejs +++ b/platform/android/src/style/layers/layer.cpp.ejs @@ -84,22 +84,21 @@ namespace android { <% } -%> <% } -%> - jni::Class<<%- camelize(type) %>Layer> <%- camelize(type) %>Layer::javaClass; - jni::jobject* <%- camelize(type) %>Layer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = <%- camelize(type) %>Layer::javaClass.template GetConstructor<jni::jlong>(env); - return <%- camelize(type) %>Layer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<<%- camelize(type) %>Layer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void <%- camelize(type) %>Layer::registerNative(jni::JNIEnv& env) { // Lookup the class - <%- camelize(type) %>Layer::javaClass = *jni::Class<<%- camelize(type) %>Layer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<<%- camelize(type) %>Layer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<<%- camelize(type) %>Layer>( - env, <%- camelize(type) %>Layer::javaClass, "nativePtr", + env, javaClass, "nativePtr", <% if (type === 'background') { -%> std::make_unique<<%- camelize(type) %>Layer, JNIEnv&, jni::String>, <% } else { -%> diff --git a/platform/android/src/style/layers/layer.hpp b/platform/android/src/style/layers/layer.hpp index 41022bf74a..8112dd18d6 100644 --- a/platform/android/src/style/layers/layer.hpp +++ b/platform/android/src/style/layers/layer.hpp @@ -17,8 +17,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/Layer"; }; - static jni::Class<Layer> javaClass; - static void registerNative(jni::JNIEnv&); /* diff --git a/platform/android/src/style/layers/layer.hpp.ejs b/platform/android/src/style/layers/layer.hpp.ejs index 837049b4c3..dd599d71df 100644 --- a/platform/android/src/style/layers/layer.hpp.ejs +++ b/platform/android/src/style/layers/layer.hpp.ejs @@ -19,8 +19,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/<%- camelize(type) %>Layer"; }; - static jni::Class<<%- camelize(type) %>Layer> javaClass; - static void registerNative(jni::JNIEnv&); <% if (type === 'background') { -%> diff --git a/platform/android/src/style/layers/line_layer.cpp b/platform/android/src/style/layers/line_layer.cpp index f143ecc236..2656bd9c09 100644 --- a/platform/android/src/style/layers/line_layer.cpp +++ b/platform/android/src/style/layers/line_layer.cpp @@ -243,22 +243,21 @@ namespace android { } - jni::Class<LineLayer> LineLayer::javaClass; - jni::jobject* LineLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = LineLayer::javaClass.template GetConstructor<jni::jlong>(env); - return LineLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<LineLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void LineLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - LineLayer::javaClass = *jni::Class<LineLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<LineLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<LineLayer>( - env, LineLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<LineLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/line_layer.hpp b/platform/android/src/style/layers/line_layer.hpp index 9eef1349cb..4d1e759c1b 100644 --- a/platform/android/src/style/layers/line_layer.hpp +++ b/platform/android/src/style/layers/line_layer.hpp @@ -15,8 +15,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/LineLayer"; }; - static jni::Class<LineLayer> javaClass; - static void registerNative(jni::JNIEnv&); LineLayer(jni::JNIEnv&, jni::String, jni::String); diff --git a/platform/android/src/style/layers/raster_layer.cpp b/platform/android/src/style/layers/raster_layer.cpp index 53086951e4..c52891b662 100644 --- a/platform/android/src/style/layers/raster_layer.cpp +++ b/platform/android/src/style/layers/raster_layer.cpp @@ -162,22 +162,21 @@ namespace android { } - jni::Class<RasterLayer> RasterLayer::javaClass; - jni::jobject* RasterLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = RasterLayer::javaClass.template GetConstructor<jni::jlong>(env); - return RasterLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<RasterLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void RasterLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - RasterLayer::javaClass = *jni::Class<RasterLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<RasterLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<RasterLayer>( - env, RasterLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<RasterLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/raster_layer.hpp b/platform/android/src/style/layers/raster_layer.hpp index d1c1b45234..4e268c36e5 100644 --- a/platform/android/src/style/layers/raster_layer.hpp +++ b/platform/android/src/style/layers/raster_layer.hpp @@ -15,8 +15,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/RasterLayer"; }; - static jni::Class<RasterLayer> javaClass; - static void registerNative(jni::JNIEnv&); RasterLayer(jni::JNIEnv&, jni::String, jni::String); diff --git a/platform/android/src/style/layers/symbol_layer.cpp b/platform/android/src/style/layers/symbol_layer.cpp index d44744a6cf..953c73e221 100644 --- a/platform/android/src/style/layers/symbol_layer.cpp +++ b/platform/android/src/style/layers/symbol_layer.cpp @@ -492,22 +492,21 @@ namespace android { } - jni::Class<SymbolLayer> SymbolLayer::javaClass; - jni::jobject* SymbolLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = SymbolLayer::javaClass.template GetConstructor<jni::jlong>(env); - return SymbolLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<SymbolLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void SymbolLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - SymbolLayer::javaClass = *jni::Class<SymbolLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<SymbolLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) // Register the peer jni::RegisterNativePeer<SymbolLayer>( - env, SymbolLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", std::make_unique<SymbolLayer, JNIEnv&, jni::String, jni::String>, "initialize", "finalize", diff --git a/platform/android/src/style/layers/symbol_layer.hpp b/platform/android/src/style/layers/symbol_layer.hpp index 417e5e143f..3835e01bf1 100644 --- a/platform/android/src/style/layers/symbol_layer.hpp +++ b/platform/android/src/style/layers/symbol_layer.hpp @@ -15,8 +15,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/SymbolLayer"; }; - static jni::Class<SymbolLayer> javaClass; - static void registerNative(jni::JNIEnv&); SymbolLayer(jni::JNIEnv&, jni::String, jni::String); diff --git a/platform/android/src/style/layers/unknown_layer.cpp b/platform/android/src/style/layers/unknown_layer.cpp index 8ffda82bfc..9f877e4896 100644 --- a/platform/android/src/style/layers/unknown_layer.cpp +++ b/platform/android/src/style/layers/unknown_layer.cpp @@ -22,16 +22,15 @@ namespace android { : Layer(map, std::move(coreLayer)) { } - jni::Class<UnknownLayer> UnknownLayer::javaClass; - jni::jobject* UnknownLayer::createJavaPeer(jni::JNIEnv& env) { - static auto constructor = UnknownLayer::javaClass.template GetConstructor<jni::jlong>(env); - return UnknownLayer::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + static auto javaClass = jni::Class<UnknownLayer>::Singleton(env); + static auto constructor = javaClass.GetConstructor<jni::jlong>(env); + return javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); } void UnknownLayer::registerNative(jni::JNIEnv& env) { // Lookup the class - UnknownLayer::javaClass = *jni::Class<UnknownLayer>::Find(env).NewGlobalRef(env).release(); + static auto javaClass = jni::Class<UnknownLayer>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) @@ -39,7 +38,7 @@ namespace android { // Register the peer jni::RegisterNativePeer<UnknownLayer>( - env, UnknownLayer::javaClass, "nativePtr", + env, javaClass, "nativePtr", init, "initialize", "finalize"); diff --git a/platform/android/src/style/layers/unknown_layer.hpp b/platform/android/src/style/layers/unknown_layer.hpp index 67992ea007..0610c843f1 100644 --- a/platform/android/src/style/layers/unknown_layer.hpp +++ b/platform/android/src/style/layers/unknown_layer.hpp @@ -12,8 +12,6 @@ public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/style/layers/UnknownLayer"; }; - static jni::Class<UnknownLayer> javaClass; - static void registerNative(jni::JNIEnv&); UnknownLayer(mbgl::Map&, mbgl::style::Layer&); |