diff options
author | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2017-11-13 16:06:26 -0800 |
---|---|---|
committer | Asheem Mamoowala <asheem.mamoowala@mapbox.com> | 2017-11-22 13:56:38 -0800 |
commit | f06ebcc96791838acb485fc37877725a443ca8f5 (patch) | |
tree | 54b32821974703a3fae30ee86668bba4115f06e9 /platform/android/src/style/sources/custom_geometry_source.cpp | |
parent | 3067b77c650f5dea0c00a7a92a9fc927e028c742 (diff) | |
download | qtlocation-mapboxgl-f06ebcc96791838acb485fc37877725a443ca8f5.tar.gz |
[android] Reuse Java Source objects by holding on to a strong reference in the C++ peer.
Diffstat (limited to 'platform/android/src/style/sources/custom_geometry_source.cpp')
-rw-r--r-- | platform/android/src/style/sources/custom_geometry_source.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/platform/android/src/style/sources/custom_geometry_source.cpp b/platform/android/src/style/sources/custom_geometry_source.cpp index e647975e4d..205fe55ed9 100644 --- a/platform/android/src/style/sources/custom_geometry_source.cpp +++ b/platform/android/src/style/sources/custom_geometry_source.cpp @@ -46,6 +46,12 @@ namespace android { javaPeer(_obj.NewGlobalRef(env)) { } + CustomGeometrySource::CustomGeometrySource(jni::JNIEnv& env, + mbgl::style::Source& coreSource, + AndroidRendererFrontend& frontend) + : Source(env, coreSource, createJavaPeer(env), frontend) { + } + CustomGeometrySource::~CustomGeometrySource() = default; void CustomGeometrySource::fetchTile (const mbgl::CanonicalTileID& tileID) { @@ -94,9 +100,9 @@ namespace android { jni::Class<CustomGeometrySource> CustomGeometrySource::javaClass; - jni::jobject* CustomGeometrySource::createJavaPeer(jni::JNIEnv& env) { + jni::Object<Source> CustomGeometrySource::createJavaPeer(jni::JNIEnv& env) { static auto constructor = CustomGeometrySource::javaClass.template GetConstructor<jni::jlong>(env); - return CustomGeometrySource::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)); + return jni::Object<Source>(CustomGeometrySource::javaClass.New(env, constructor, reinterpret_cast<jni::jlong>(this)).Get()); } void CustomGeometrySource::registerNative(jni::JNIEnv& env) { |