diff --git a/coreapi/conference.c b/coreapi/conference.c index 51623babe..7efed4f2d 100644 --- a/coreapi/conference.c +++ b/coreapi/conference.c @@ -194,6 +194,9 @@ int linphone_core_enter_conference(LinphoneCore *lc){ if (linphone_core_sound_resources_locked(lc)) { return -1; } + if (lc->current_call != NULL) { + linphone_core_pause_call(lc, lc->current_call); + } LinphoneConference *conf=&lc->conf_ctx; if (conf->local_participant==NULL) add_local_endpoint(conf,lc); return 0; diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 27fa417cc..9347f3fff 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -1471,8 +1471,8 @@ extern "C" jint Java_org_linphone_core_LinphoneCoreImpl_resumeCall(JNIEnv *env,j extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_isInConference(JNIEnv *env,jobject thiz,jlong pCore) { return linphone_core_is_in_conference((LinphoneCore *) pCore); } -extern "C" void Java_org_linphone_core_LinphoneCoreImpl_enterConference(JNIEnv *env,jobject thiz,jlong pCore) { - linphone_core_enter_conference((LinphoneCore *) pCore); +extern "C" jboolean Java_org_linphone_core_LinphoneCoreImpl_enterConference(JNIEnv *env,jobject thiz,jlong pCore) { + return 0 == linphone_core_enter_conference((LinphoneCore *) pCore); } extern "C" void Java_org_linphone_core_LinphoneCoreImpl_leaveConference(JNIEnv *env,jobject thiz,jlong pCore) { linphone_core_leave_conference((LinphoneCore *) pCore); diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index 30d87b456..44ac2996f 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -607,7 +607,7 @@ public interface LinphoneCore { void enableEchoLimiter(boolean val); boolean isInConference(); - void enterConference(); + boolean enterConference(); void leaveConference(); void addToConference(LinphoneCall call);