From 4db882f666c031a5d03c46a6f28cc4b83b254a98 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 27 May 2021 16:12:12 +0200 Subject: [PATCH] android/LogListener: cache the jmethodID --- src/android/LogListener.cxx | 13 +++++-------- src/android/LogListener.hxx | 2 ++ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/android/LogListener.cxx b/src/android/LogListener.cxx index 872208e5d..36c78a142 100644 --- a/src/android/LogListener.cxx +++ b/src/android/LogListener.cxx @@ -26,6 +26,10 @@ LogListener::LogListener(JNIEnv *env, jobject obj) noexcept :Java::GlobalObject(env, obj) { + Java::Class cls(env, env->GetObjectClass(Get())); + + onLogMethod = env->GetMethodID(cls, "onLog", "(ILjava/lang/String;)V"); + assert(onLogMethod); } void @@ -34,18 +38,11 @@ LogListener::OnLog(JNIEnv *env, int priority, { assert(env != nullptr); - Java::Class cls(env, env->GetObjectClass(Get())); - - jmethodID method = env->GetMethodID(cls, "onLog", - "(ILjava/lang/String;)V"); - - assert(method); - std::va_list args; va_start(args, fmt); const auto log = FormatStringV(fmt, args); va_end(args); - env->CallVoidMethod(Get(), method, priority, + env->CallVoidMethod(Get(), onLogMethod, priority, Java::String(env, log.c_str()).Get()); } diff --git a/src/android/LogListener.hxx b/src/android/LogListener.hxx index 34180e77b..0a0e2a1bb 100644 --- a/src/android/LogListener.hxx +++ b/src/android/LogListener.hxx @@ -23,6 +23,8 @@ #include "java/Object.hxx" class LogListener : public Java::GlobalObject { + jmethodID onLogMethod; + public: LogListener(JNIEnv *env, jobject obj) noexcept;