diff options
Diffstat (limited to 'platform/android/src/map_renderer_runnable.cpp')
-rw-r--r-- | platform/android/src/map_renderer_runnable.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/platform/android/src/map_renderer_runnable.cpp b/platform/android/src/map_renderer_runnable.cpp index 4dc6611c40..77c3aa301d 100644 --- a/platform/android/src/map_renderer_runnable.cpp +++ b/platform/android/src/map_renderer_runnable.cpp @@ -12,9 +12,10 @@ MapRendererRunnable::MapRendererRunnable(jni::JNIEnv& env, std::weak_ptr<Mailbox // Not using a weak reference here as this might oerflow // the weak reference table on some devices jni::UniqueLocalFrame frame = jni::PushLocalFrame(env, 5); + static auto& javaClass = jni::Class<MapRendererRunnable>::Singleton(env); static auto constructor = javaClass.GetConstructor<jlong>(env); auto instance = javaClass.New(env, constructor, reinterpret_cast<jlong>(this)); - javaPeer = instance.NewGlobalRef(env); + javaPeer = jni::NewGlobal(env, instance); } MapRendererRunnable::~MapRendererRunnable() = default; @@ -23,23 +24,21 @@ void MapRendererRunnable::run(jni::JNIEnv&) { Mailbox::maybeReceive(mailbox); } -jni::UniqueObject<MapRendererRunnable> MapRendererRunnable::peer() { +jni::Global<jni::Object<MapRendererRunnable>> MapRendererRunnable::peer() { return std::move(javaPeer); } // Static methods // -jni::Class<MapRendererRunnable> MapRendererRunnable::javaClass; - void MapRendererRunnable::registerNative(jni::JNIEnv& env) { // Lookup the class - MapRendererRunnable::javaClass = *jni::Class<MapRendererRunnable>::Find(env).NewGlobalRef(env).release(); + static auto& javaClass = jni::Class<MapRendererRunnable>::Singleton(env); #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name) jni::RegisterNativePeer<MapRendererRunnable>( env, - MapRendererRunnable::javaClass, + javaClass, "nativePtr", std::make_unique<MapRendererRunnable, JNIEnv&>, "nativeInitialize", |