From ead4e359a1963effc1b06aadaf7d276b3b0b7988 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Sun, 2 Mar 2025 23:12:08 +0800 Subject: [PATCH 1/2] Fix events emulation --- interop/src/cpp/ani/convertors-ani.cc | 4 +--- interop/src/cpp/ani/convertors-ani.h | 1 + interop/src/cpp/vmloader.cc | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/interop/src/cpp/ani/convertors-ani.cc b/interop/src/cpp/ani/convertors-ani.cc index 2981a029b7..0f0f5c8fc2 100644 --- a/interop/src/cpp/ani/convertors-ani.cc +++ b/interop/src/cpp/ani/convertors-ani.cc @@ -87,7 +87,7 @@ ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result) { return ANI_ERROR; } if (!setKoalaANICallbackDispatcher(aniEnv, interopClass, callCallbackFromNative, callCallbackFromNativeSig)) { - LOGE("Failed to set koala ets callback dispatcher"); + LOGE("Failed to set ANI callback dispatcher"); return ANI_ERROR; } return ANI_OK; @@ -156,7 +156,6 @@ const std::string& AniExports::getClasspath(const std::string& module) { static struct { ani_class clazz = nullptr; - ani_ref clazzRef = nullptr; ani_static_method method = nullptr; } g_koalaANICallbackDispatcher; @@ -167,7 +166,6 @@ bool setKoalaANICallbackDispatcher( const char* dispatcherMethodSig ) { g_koalaANICallbackDispatcher.clazz = clazz; - aniEnv->GlobalReference_Create(clazz, &g_koalaANICallbackDispatcher.clazzRef); aniEnv->Class_GetStaticMethod( clazz, dispatcherMethodName, dispatcherMethodSig, &g_koalaANICallbackDispatcher.method diff --git a/interop/src/cpp/ani/convertors-ani.h b/interop/src/cpp/ani/convertors-ani.h index 51adb48b1c..0bfd038e14 100644 --- a/interop/src/cpp/ani/convertors-ani.h +++ b/interop/src/cpp/ani/convertors-ani.h @@ -1450,6 +1450,7 @@ void getKoalaANICallbackDispatcher(ani_class* clazz, ani_static_method* method); env->FixedArray_New_Byte(length, &args_managed); \ env->FixedArray_SetRegion_Byte(args_managed, 0, length, reinterpret_cast(args)); \ ani_int result = 0; \ + printf("call cb %p", method); \ env->Class_CallStaticMethod_Int(clazz, method, &result, id, args_managed, length); \ env->FixedArray_GetRegion_Byte(args_managed, 0, length, reinterpret_cast(args)); \ } diff --git a/interop/src/cpp/vmloader.cc b/interop/src/cpp/vmloader.cc index 4b01e66bed..61dde55469 100644 --- a/interop/src/cpp/vmloader.cc +++ b/interop/src/cpp/vmloader.cc @@ -565,7 +565,7 @@ extern "C" DLL_EXPORT const char* EmitEvent(const KInt type, const KInt target, } #endif #if defined(KOALA_ETS_NAPI) || defined(KOALA_ANI) - if (g_vmEntry.vmKind == PANDA_VM_KIND) { + if (g_vmEntry.vmKind == PANDA_VM_KIND || g_vmEntry.vmKind == PANDA_ANI_VM_KIND) { EtsEnv* etsEnv = (EtsEnv*)(g_vmEntry.env); if (!g_vmEntry.emitEvent) { LOGE("Cannot find emitEvent method"); -- Gitee From 49375ecd1698e2a468623b35824b8ad4f8904b64 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Sun, 2 Mar 2025 23:15:52 +0800 Subject: [PATCH 2/2] Remove log --- interop/src/cpp/ani/convertors-ani.h | 1 - 1 file changed, 1 deletion(-) diff --git a/interop/src/cpp/ani/convertors-ani.h b/interop/src/cpp/ani/convertors-ani.h index 0bfd038e14..51adb48b1c 100644 --- a/interop/src/cpp/ani/convertors-ani.h +++ b/interop/src/cpp/ani/convertors-ani.h @@ -1450,7 +1450,6 @@ void getKoalaANICallbackDispatcher(ani_class* clazz, ani_static_method* method); env->FixedArray_New_Byte(length, &args_managed); \ env->FixedArray_SetRegion_Byte(args_managed, 0, length, reinterpret_cast(args)); \ ani_int result = 0; \ - printf("call cb %p", method); \ env->Class_CallStaticMethod_Int(clazz, method, &result, id, args_managed, length); \ env->FixedArray_GetRegion_Byte(args_managed, 0, length, reinterpret_cast(args)); \ } -- Gitee