+ jobject listener = (jobject) ud;
+ jclass clazz = (jclass) env->GetObjectClass(listener);
+ jmethodID method = env->GetMethodID(clazz, "onLinphoneChatMessageStateChanged","(Lorg/linphone/core/LinphoneChatMessage;Lorg/linphone/core/LinphoneChatMessage$State;)V");
+
+ LinphoneCore *lc = linphone_chat_room_get_lc(linphone_chat_message_get_chat_room(msg));
+ LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_get_user_data(lc);
+ env->CallVoidMethod(
+ listener,
+ method,
+ (jobject)linphone_chat_message_get_user_data(msg),
+ env->CallStaticObjectMethod(lcData->chatMessageStateClass,lcData->chatMessageStateFromIntId,(jint)state));
+
+ if (state == LinphoneChatMessageStateDelivered || state == LinphoneChatMessageStateNotDelivered) {
+ env->DeleteGlobalRef(listener);
+ }
+}
+extern "C" void Java_org_linphone_core_LinphoneChatRoomImpl_sendMessage2(JNIEnv* env
+ ,jobject thiz
+ ,jlong ptr
+ ,jlong jmessage
+ ,jobject jlistener) {
+ jobject listener = env->NewGlobalRef(jlistener);
+ linphone_chat_room_send_message2((LinphoneChatRoom*)ptr, (LinphoneChatMessage*)jmessage, chat_room_impl_callback, (void*)listener);
+}