From fa7214020c5d9bb2daa5ebf4a8e36e0dc1720a4d Mon Sep 17 00:00:00 2001 From: secozzi Date: Tue, 30 Sep 2025 03:04:31 +0200 Subject: [PATCH] Pass `MPVNode` to `event` --- app/src/main/java/is/xyz/mpv/MPVLib.kt | 6 +++--- app/src/main/jni/event.cpp | 13 ++++++++++--- app/src/main/jni/jni_utils.cpp | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/is/xyz/mpv/MPVLib.kt b/app/src/main/java/is/xyz/mpv/MPVLib.kt index f6d922da3..8c076b802 100644 --- a/app/src/main/java/is/xyz/mpv/MPVLib.kt +++ b/app/src/main/java/is/xyz/mpv/MPVLib.kt @@ -180,9 +180,9 @@ object MPVLib { } @JvmStatic - fun event(eventId: Int) { + fun event(eventId: Int, data: MPVNode) { synchronized(observers) { - for (o in observers) o.event(eventId) + for (o in observers) o.event(eventId, data) } scope.launch { eventFlow.emit(eventId) } } @@ -215,7 +215,7 @@ object MPVLib { fun eventProperty(property: String, value: String) fun eventProperty(property: String, value: Double) fun eventProperty(property: String, value: MPVNode) - fun event(eventId: Int) + fun event(eventId: Int, data: MPVNode) } interface LogObserver { diff --git a/app/src/main/jni/event.cpp b/app/src/main/jni/event.cpp index 269183e0a..7d6db1962 100644 --- a/app/src/main/jni/event.cpp +++ b/app/src/main/jni/event.cpp @@ -52,9 +52,13 @@ static void sendPropertyUpdateToJava(JNIEnv *env, mpv_event_property *prop) env->DeleteLocalRef(jvalue); } -static void sendEventToJava(JNIEnv *env, int event) +static void sendEventToJava(JNIEnv *env, int event, mpv_node *event_node) { - env->CallStaticVoidMethod(mpv_MPVLib, mpv_MPVLib_event, event); + jobject jnode = mpv_node_to_jobject(env, event_node); + if (jnode) { + env->CallStaticVoidMethod(mpv_MPVLib, mpv_MPVLib_event, event, jnode); + env->DeleteLocalRef(jnode); + } } static void sendLogMessageToJava(JNIEnv *env, mpv_event_log_message *msg) @@ -112,7 +116,10 @@ void *event_thread(void *arg) break; default: ALOGV("event: %s\n", mpv_event_name(mp_event->event_id)); - sendEventToJava(env, mp_event->event_id); + mpv_node event_node; + mpv_event_to_node(&event_node, mp_event); + sendEventToJava(env, mp_event->event_id, &event_node); + mpv_free_node_contents(&event_node); break; } } diff --git a/app/src/main/jni/jni_utils.cpp b/app/src/main/jni/jni_utils.cpp index bcf1a584f..97adecc55 100644 --- a/app/src/main/jni/jni_utils.cpp +++ b/app/src/main/jni/jni_utils.cpp @@ -44,7 +44,7 @@ void init_methods_cache(JNIEnv *env) mpv_MPVLib_eventProperty_Sd = env->GetStaticMethodID(mpv_MPVLib, "eventProperty", "(Ljava/lang/String;D)V"); // eventProperty(String, double) mpv_MPVLib_eventProperty_SS = env->GetStaticMethodID(mpv_MPVLib, "eventProperty", "(Ljava/lang/String;Ljava/lang/String;)V"); // eventProperty(String, String) mpv_MPVLib_eventProperty_SN = env->GetStaticMethodID(mpv_MPVLib, "eventProperty", "(Ljava/lang/String;Lis/xyz/mpv/MPVNode;)V"); // eventProperty(String, MPVNode) - mpv_MPVLib_event = env->GetStaticMethodID(mpv_MPVLib, "event", "(I)V"); // event(int) + mpv_MPVLib_event = env->GetStaticMethodID(mpv_MPVLib, "event", "(ILis/xyz/mpv/MPVNode;)V"); // event(int, MPVNode) mpv_MPVLib_logMessage_SiS = env->GetStaticMethodID(mpv_MPVLib, "logMessage", "(Ljava/lang/String;ILjava/lang/String;)V"); // logMessage(String, int, String) // for array node creation, tbh, it might be better to use "List" instead but i wanted consitent naming