diff options
Diffstat (limited to 'platform/android/src/style/layers/custom_layer.cpp')
-rw-r--r-- | platform/android/src/style/layers/custom_layer.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/platform/android/src/style/layers/custom_layer.cpp b/platform/android/src/style/layers/custom_layer.cpp index f6f3bb249c..3f44aa8505 100644 --- a/platform/android/src/style/layers/custom_layer.cpp +++ b/platform/android/src/style/layers/custom_layer.cpp @@ -8,7 +8,7 @@ namespace mbgl { namespace android { CustomLayer::CustomLayer(jni::JNIEnv& env, const jni::String& layerId, jni::jlong host) - : Layer(env, std::make_unique<mbgl::style::CustomLayer>( + : Layer(std::make_unique<mbgl::style::CustomLayer>( jni::Make<std::string>(env, layerId), std::unique_ptr<mbgl::style::CustomLayerHost>(reinterpret_cast<mbgl::style::CustomLayerHost*>(host))) ) { @@ -19,7 +19,7 @@ namespace android { } CustomLayer::CustomLayer(mbgl::Map& map, std::unique_ptr<mbgl::style::CustomLayer> coreLayer) - : Layer(map, std::move(coreLayer)) { + : Layer(map, std::move(coreLayer)) { } CustomLayer::~CustomLayer() = default; @@ -33,13 +33,25 @@ namespace android { } } - jni::Local<jni::Object<Layer>> CustomLayer::createJavaPeer(jni::JNIEnv& env) { - 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)); + namespace { + jni::Local<jni::Object<Layer>> createJavaPeer(jni::JNIEnv& env, Layer* layer) { + 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>(layer)); + } + } + + CustomJavaLayerPeerFactory::~CustomJavaLayerPeerFactory() = default; + + jni::Local<jni::Object<Layer>> CustomJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, mbgl::Map& map, mbgl::style::Layer& layer) { + return createJavaPeer(env, new CustomLayer(map, static_cast<mbgl::style::CustomLayer&>(layer))); + } + + jni::Local<jni::Object<Layer>> CustomJavaLayerPeerFactory::createJavaLayerPeer(jni::JNIEnv& env, mbgl::Map& map, std::unique_ptr<mbgl::style::Layer> layer) { + return createJavaPeer(env, new CustomLayer(map, std::unique_ptr<mbgl::style::CustomLayer>(static_cast<mbgl::style::CustomLayer*>(layer.release())))); } - void CustomLayer::registerNative(jni::JNIEnv& env) { + void CustomJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) { // Lookup the class static auto& javaClass = jni::Class<CustomLayer>::Singleton(env); |