diff --git a/build/android/Android.mk b/build/android/Android.mk index b0d51fc32..96fe57e16 100755 --- a/build/android/Android.mk +++ b/build/android/Android.mk @@ -53,7 +53,6 @@ LOCAL_SRC_FILES := \ enum.c \ event.c \ friend.c \ - friendlist.c \ info.c \ linphonecall.c \ linphonecore.c \ diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 24df9fde4..c58e1b48c 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -3341,10 +3341,17 @@ extern "C" void Java_org_linphone_core_LinphoneChatRoomImpl_markAsRead(JNIEnv* extern "C" jlong Java_org_linphone_core_LinphoneChatRoomImpl_createFileTransferMessage(JNIEnv* env, jobject thiz, jlong ptr, jstring jname, jstring jtype, jstring jsubtype, jint data_size) { - LinphoneContent content = {0}; + LinphoneContentPrivate content = {0}; LinphoneChatMessage *message = NULL; - message = linphone_chat_room_create_file_transfer_message((LinphoneChatRoom *)ptr, &content); + content.type = (char*)env->GetStringUTFChars(jtype, NULL); + content.subtype = (char*)env->GetStringUTFChars(jsubtype, NULL); + content.name = (char*)env->GetStringUTFChars(jname, NULL); + content.size = data_size; + message = linphone_chat_room_create_file_transfer_message((LinphoneChatRoom *)ptr, LINPHONE_CONTENT(&content)); + env->ReleaseStringUTFChars(jtype, content.type); + env->ReleaseStringUTFChars(jsubtype, content.subtype); + env->ReleaseStringUTFChars(jname, content.name); return (jlong) message; } @@ -4730,14 +4737,24 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_subscribe(JNIE jstring jevname, jint expires, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ LinphoneCore *lc=(LinphoneCore*)coreptr; LinphoneAddress *addr=(LinphoneAddress*)addrptr; - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev; jobject jev=NULL; const char *evname=env->GetStringUTFChars(jevname,NULL); - ev=linphone_core_subscribe(lc,addr,evname,expires,linphone_content_get_type(&content) ? &content : NULL); if (jtype){ - env->ReleaseByteArrayElements(jdata,(jbyte*)linphone_content_get_user_data(&content),JNI_ABORT); + content.type=(char*)env->GetStringUTFChars(jtype,NULL); + content.subtype=(char*)env->GetStringUTFChars(jsubtype,NULL); + content.encoding=jencoding ? (char*)env->GetStringUTFChars(jencoding,NULL) : NULL; + content.data=(void*)env->GetByteArrayElements(jdata,NULL); + content.size=env->GetArrayLength(jdata); + } + ev=linphone_core_subscribe(lc,addr,evname,expires,content.type ? LINPHONE_CONTENT(&content) : NULL); + if (jtype){ + env->ReleaseStringUTFChars(jtype,content.type); + env->ReleaseStringUTFChars(jsubtype,content.subtype); + if (jencoding) env->ReleaseStringUTFChars(jencoding,content.encoding); + env->ReleaseByteArrayElements(jdata,(jbyte*)content.data,JNI_ABORT); } env->ReleaseStringUTFChars(jevname,evname); if (ev){ @@ -4755,16 +4772,24 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_publish(JNIEnv jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ LinphoneCore *lc=(LinphoneCore*)coreptr; LinphoneAddress *addr=(LinphoneAddress*)addrptr; - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev; jobject jev=NULL; const char *evname=env->GetStringUTFChars(jevname,NULL); - ev=linphone_core_subscribe(lc,addr,evname,expires,linphone_content_get_type(&content) ? &content : NULL); - if (jtype){ - env->ReleaseByteArrayElements(jdata,(jbyte*)linphone_content_get_user_data(&content),JNI_ABORT); - + content.type=(char*)env->GetStringUTFChars(jtype,NULL); + content.subtype=(char*)env->GetStringUTFChars(jsubtype,NULL); + content.encoding=jencoding ? (char*)env->GetStringUTFChars(jencoding,NULL) : NULL; + content.data=(void*)env->GetByteArrayElements(jdata,NULL); + content.size=env->GetArrayLength(jdata); + } + ev=linphone_core_publish(lc,addr,evname,expires,content.type ? LINPHONE_CONTENT(&content) : NULL); + if (jtype){ + env->ReleaseStringUTFChars(jtype,content.type); + env->ReleaseStringUTFChars(jsubtype,content.subtype); + if (jencoding) env->ReleaseStringUTFChars(jencoding,content.encoding); + env->ReleaseByteArrayElements(jdata,(jbyte*)content.data,JNI_ABORT); } env->ReleaseStringUTFChars(jevname,evname); if (ev){ @@ -4907,24 +4932,33 @@ static jobject create_java_linphone_content(JNIEnv *env, const LinphoneContent * jstring jtype, jsubtype, jencoding, jname; jbyteArray jdata = NULL; jint jsize = 0; + const LinphoneContentPrivate *content = LINPHONE_CONTENT_PRIVATE(icontent); contentClass = (jclass)env->FindClass("org/linphone/core/LinphoneContentImpl"); ctor = env->GetMethodID(contentClass,"", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;I)V"); - jtype = env->NewStringUTF(linphone_content_get_type(icontent)); - jsubtype = env->NewStringUTF(linphone_content_get_subtype(icontent)); - jencoding = linphone_content_get_encoding(icontent) ? env->NewStringUTF(linphone_content_get_encoding(icontent)) : NULL; - jname = linphone_content_get_name(icontent) ? env->NewStringUTF(linphone_content_get_name(icontent)) : NULL; - jsize = (jint) linphone_content_get_size(icontent); + jtype = env->NewStringUTF(content->type); + jsubtype = env->NewStringUTF(content->subtype); + jencoding = content->encoding ? env->NewStringUTF(content->encoding) : NULL; + jname = content->name ? env->NewStringUTF(content->name) : NULL; + jsize = (jint) content->size; - if (linphone_content_get_user_data(icontent)){ - jdata = env->NewByteArray(linphone_content_get_size(icontent)); - env->SetByteArrayRegion(jdata, 0, linphone_content_get_size(icontent), (jbyte*)linphone_content_get_user_data(icontent)); + if (content->data){ + jdata = env->NewByteArray(content->size); + env->SetByteArrayRegion(jdata, 0, content->size, (jbyte*)content->data); } jobject jobj = env->NewObject(contentClass, ctor, jname, jtype, jsubtype, jdata, jencoding, jsize); env->DeleteLocalRef(contentClass); + env->DeleteLocalRef(jtype); + env->DeleteLocalRef(jsubtype); + if (jencoding) { + env->DeleteLocalRef(jencoding); + } + if (jname) { + env->DeleteLocalRef(jname); + } return jobj; } @@ -4994,9 +5028,16 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneInfoMessageImpl_getCont * Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneInfoMessageImpl_setContent(JNIEnv *env, jobject jobj, jlong infoptr, jstring jtype, jstring jsubtype, jstring jdata){ - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; - linphone_info_message_set_content((LinphoneInfoMessage*)infoptr,&content); + content.type=(char*)env->GetStringUTFChars(jtype,NULL); + content.subtype=(char*)env->GetStringUTFChars(jsubtype,NULL); + content.data=(void*)env->GetStringUTFChars(jdata,NULL); + content.size=strlen((char*)content.data); + linphone_info_message_set_content((LinphoneInfoMessage*)infoptr,LINPHONE_CONTENT(&content)); + env->ReleaseStringUTFChars(jtype,content.type); + env->ReleaseStringUTFChars(jsubtype,content.subtype); + env->ReleaseStringUTFChars(jdata,(char*)content.data); } /* @@ -5096,13 +5137,26 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_denySubscription * Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_notify(JNIEnv *env, jobject jobj, jlong evptr, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev=(LinphoneEvent*)evptr; jint err; + if (jtype){ + content.type=(char*)env->GetStringUTFChars(jtype,NULL); + content.subtype=(char*)env->GetStringUTFChars(jsubtype,NULL); + content.encoding=jencoding ? (char*)env->GetStringUTFChars(jsubtype,NULL) : NULL; + content.data=(void*)env->GetByteArrayElements(jdata,NULL); + content.size=env->GetArrayLength(jdata); + } - err=linphone_event_notify(ev,linphone_content_get_type(&content) ? &content : NULL); + err=linphone_event_notify(ev,content.type ? LINPHONE_CONTENT(&content) : NULL); + if (jtype){ + env->ReleaseStringUTFChars(jtype,content.type); + env->ReleaseStringUTFChars(jsubtype,content.subtype); + if (jencoding) env->ReleaseStringUTFChars(jencoding,content.encoding); + env->ReleaseByteArrayElements(jdata,(jbyte*)content.data,JNI_ABORT); + } return err; } @@ -5112,12 +5166,26 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_notify(JNIEnv *e * Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_updateSubscribe(JNIEnv *env, jobject jobj, jlong evptr, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev=(LinphoneEvent*)evptr; jint err; - err=linphone_event_update_subscribe(ev,linphone_content_get_type(&content) ? &content : NULL); + if (jtype){ + content.type=(char*)env->GetStringUTFChars(jtype,NULL); + content.subtype=(char*)env->GetStringUTFChars(jsubtype,NULL); + content.encoding=jencoding ? (char*)env->GetStringUTFChars(jsubtype,NULL) : NULL; + content.data=(void*)env->GetByteArrayElements(jdata,NULL); + content.size=env->GetArrayLength(jdata); + } + err=linphone_event_update_subscribe(ev,content.type ? LINPHONE_CONTENT(&content) : NULL); + + if (jtype){ + env->ReleaseStringUTFChars(jtype,content.type); + env->ReleaseStringUTFChars(jsubtype,content.subtype); + if (jencoding) env->ReleaseStringUTFChars(jencoding,content.encoding); + env->ReleaseByteArrayElements(jdata,(jbyte*)content.data,JNI_ABORT); + } return err; } @@ -5127,12 +5195,26 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_updateSubscribe( * Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I */ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneEventImpl_updatePublish(JNIEnv *env, jobject jobj, jlong evptr, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding){ - LinphoneContent content={0}; + LinphoneContentPrivate content={0}; LinphoneEvent *ev=(LinphoneEvent*)evptr; jint err; - err=linphone_event_update_publish(ev,linphone_content_get_type(&content) ? &content : NULL); + if (jtype){ + content.type=(char*)env->GetStringUTFChars(jtype,NULL); + content.subtype=(char*)env->GetStringUTFChars(jsubtype,NULL); + content.encoding=jencoding ? (char*)env->GetStringUTFChars(jsubtype,NULL) : NULL; + content.data=(void*)env->GetByteArrayElements(jdata,NULL); + content.size=env->GetArrayLength(jdata); + } + err=linphone_event_update_publish(ev,content.type ? LINPHONE_CONTENT(&content) : NULL); + + if (jtype){ + env->ReleaseStringUTFChars(jtype,content.type); + env->ReleaseStringUTFChars(jsubtype,content.subtype); + if (jencoding) env->ReleaseStringUTFChars(jencoding,content.encoding); + env->ReleaseByteArrayElements(jdata,(jbyte*)content.data,JNI_ABORT); + } return err; } @@ -5198,8 +5280,21 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_createSubscrib } JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneEventImpl_sendSubscribe(JNIEnv *env, jobject thiz, jlong jevent, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding) { - LinphoneContent content = {0}; - linphone_event_send_subscribe((LinphoneEvent*) jevent, linphone_content_get_type(&content)? &content : NULL); + LinphoneContentPrivate content = {0}; + if (jtype) { + content.type = (char*) env->GetStringUTFChars(jtype, NULL); + content.subtype = (char*) env->GetStringUTFChars(jsubtype, NULL); + content.encoding = jencoding ? (char*) env->GetStringUTFChars(jencoding, NULL) : NULL; + content.data = (void*) env->GetByteArrayElements(jdata, NULL); + content.size = env->GetArrayLength(jdata); + } + linphone_event_send_subscribe((LinphoneEvent*) jevent, content.type ? LINPHONE_CONTENT(&content) : NULL); + if (jtype) { + env->ReleaseStringUTFChars(jtype, content.type); + env->ReleaseStringUTFChars(jsubtype, content.subtype); + if (jencoding) env->ReleaseStringUTFChars(jencoding, content.encoding); + env->ReleaseByteArrayElements(jdata, (jbyte*) content.data, JNI_ABORT); + } } JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_createPublish(JNIEnv *env, jobject thiz, jlong jcore, jlong jaddr, jstring jeventname, jint expires) { @@ -5218,10 +5313,21 @@ JNIEXPORT jobject JNICALL Java_org_linphone_core_LinphoneCoreImpl_createPublish( } JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneEventImpl_sendPublish(JNIEnv *env, jobject thiz, jlong jevent, jstring jtype, jstring jsubtype, jbyteArray jdata, jstring jencoding) { - LinphoneContent content = {0}; - linphone_event_send_publish((LinphoneEvent*) jevent, linphone_content_get_type(&content)? &content : NULL); - - + LinphoneContentPrivate content = {0}; + if (jtype) { + content.type = (char*) env->GetStringUTFChars(jtype, NULL); + content.subtype = (char*) env->GetStringUTFChars(jsubtype, NULL); + content.encoding = jencoding ? (char*) env->GetStringUTFChars(jencoding, NULL) : NULL; + content.data = (void*) env->GetByteArrayElements(jdata, NULL); + content.size = env->GetArrayLength(jdata); + } + linphone_event_send_publish((LinphoneEvent*) jevent, content.type ? LINPHONE_CONTENT(&content) : NULL); + if (jtype) { + env->ReleaseStringUTFChars(jtype, content.type); + env->ReleaseStringUTFChars(jsubtype, content.subtype); + if (jencoding) env->ReleaseStringUTFChars(jencoding, content.encoding); + env->ReleaseByteArrayElements(jdata, (jbyte*) content.data, JNI_ABORT); + } } JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneEventImpl_addCustomHeader(JNIEnv *env, jobject thiz, jlong jevent, jstring jname, jstring jvalue) {