Commit 623dc72e authored by Sandrine Avakian's avatar Sandrine Avakian
Browse files

Merge branch '3.10.x'

# Conflicts:
#	CMakeLists.txt
#	coreapi/account_creator.c
#	coreapi/friendlist.c
#	coreapi/linphonecore_jni.cc
#	coreapi/misc.c
#	coreapi/vcard.cc
#	coreapi/vcard.h
#	coreapi/vcard_stubs.c
#	gtk/videowindow.c
#	java/common/org/linphone/core/LinphoneNatPolicy.java
#	java/impl/org/linphone/core/LinphoneNatPolicyImpl.java
#	mediastreamer2
#	tester/vcard_tester.c
parents c24a71a1 761c27d8
......@@ -21,14 +21,14 @@
############################################################################
cmake_minimum_required(VERSION 3.0)
project(linphone VERSION 3.9.1 LANGUAGES C CXX)
project(linphone VERSION 3.10.0 LANGUAGES C CXX)
set(LINPHONE_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
set(LINPHONE_MINOR_VERSION ${PROJECT_VERSION_MINOR})
set(LINPHONE_MICRO_VERSION ${PROJECT_VERSION_PATCH})
set(LINPHONE_VERSION ${PROJECT_VERSION})
set(LINPHONE_SO_VERSION "8")
set(LINPHONE_SO_VERSION "9")
file(GLOB LINPHONE_PO_FILES RELATIVE "${CMAKE_CURRENT_LIST_DIR}/po" "${CMAKE_CURRENT_LIST_DIR}/po/*.po")
string(REGEX REPLACE "([a-zA-Z_]+)\\.po" "\\1" LINPHONE_ALL_LANGS_LIST "${LINPHONE_PO_FILES}")
......
......@@ -349,7 +349,7 @@ About The Cisco-Provided Binary of OpenH264 Video Codec
Cisco provides this program under the terms of the BSD license.
Additionally, this binary is licensed under Ciscos AVC/H.264 Patent Portfolio
Additionally, this binary is licensed under Cisco's AVC/H.264 Patent Portfolio
License from MPEG LA, at no cost to you, provided that the requirements and
conditions shown below in the AVC/H.264 Patent Portfolio sections are met.
......@@ -367,7 +367,7 @@ BSD terms, which can be found at http://www.openh264.org
BSD License
-----------
Copyright © 2014 Cisco Systems, Inc.
Copyright (C) 2014 Cisco Systems, Inc.
All rights reserved.
......
linphone-3.10.0 -- May xxth, 2016
linphone-3.10.0 -- August 8th, 2016
* Adding lime_experimental_feature : set to 1 in .linphonerc [GtkUi] to
show the Lime menu in the graphical user interface. Caution : Experimental.
* Video conference support through a conference server (SDK only)
* Disable dummy STUN packets sending when ICE is activated.
* Signal AVPF support as AVP : Enable rtcp feedback on RTP/AVP by default
......
dnl Process this file with autoconf to produce a configure script.
AC_INIT([linphone],[3.9.1],[linphone-developers@nongnu.org])
AC_INIT([linphone],[3.10.0],[linphone-developers@nongnu.org])
AC_CANONICAL_SYSTEM
AC_CONFIG_SRCDIR([coreapi/linphonecore.c])
......
......@@ -8158,4 +8158,4 @@ extern "C" jobject Java_org_linphone_core_LinphoneAccountCreatorImpl_configure(J
LinphoneCoreVTable *table = linphone_core_get_current_vtable(lc);
LinphoneCoreData* lcData = (LinphoneCoreData*)linphone_core_v_table_get_user_data(table);
return getProxy(env, lpc, lcData->core);
}
\ No newline at end of file
}
......@@ -392,4 +392,4 @@ bool_t linphone_core_vcard_supported(void) {
#ifdef __cplusplus
}
#endif
#endif
\ No newline at end of file
......@@ -35,6 +35,7 @@ void linphone_vcard_context_destroy(LinphoneVcardContext *context) {
}
}
void* linphone_vcard_context_get_user_data(const LinphoneVcardContext *context) {
return context ? context->user_data : NULL;
}
......
......@@ -36,12 +36,30 @@ void linphone_gtk_config_uri_changed(GtkWidget *button){
if (uri && (strlen(uri)==0 || strcmp(uri,"https://")==0)) uri=NULL;
linphone_core_set_provisioning_uri(linphone_gtk_get_core(),uri);
gtk_widget_destroy(w);
if (uri){
linphone_gtk_schedule_restart();
gtk_main_quit();
if(linphone_core_set_provisioning_uri(linphone_gtk_get_core(),uri) == 0) {
gtk_widget_destroy(w);
if (uri){
#ifndef _WIN32
linphone_gtk_schedule_restart();
gtk_main_quit();
#else
GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(linphone_gtk_get_main_window()),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
_("Remote provisioning URI successfully set. Please restart Linphone in order to load the new remote settings"));
g_signal_connect_swapped(G_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), dialog);
gtk_widget_show(dialog);
#endif
}
} else {
GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(w),
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_OK,
_("Invalid remote provisioning URI"));
g_signal_connect_swapped(G_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), dialog);
gtk_widget_show(dialog);
}
}
......
......@@ -19,11 +19,10 @@
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="button2">
<property name="label">gtk-undo</property>
<property name="label">gtk-cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="linphone_gtk_config_uri_cancel" swapped="no"/>
</object>
......@@ -39,7 +38,6 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_action_appearance">False</property>
<property name="use_stock">True</property>
<signal name="clicked" handler="linphone_gtk_config_uri_changed" swapped="no"/>
</object>
......@@ -77,7 +75,7 @@ Please enter or modify the configuration URI below. After clicking OK, Linphone
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char"></property>
<property name="text" translatable="no">https://</property>
<property name="text">https://</property>
<property name="primary_icon_activatable">False</property>
<property name="secondary_icon_activatable">False</property>
<property name="primary_icon_sensitive">True</property>
......
......@@ -817,7 +817,7 @@ static void linphone_gtk_update_call_buttons(LinphoneCall *call){
conf_frame=(GtkWidget *)g_object_get_data(G_OBJECT(mw),"conf_frame");
if(conf_frame==NULL){
linphone_gtk_enable_transfer_button(lc,call_list_size>1);
linphone_gtk_enable_conference_button(lc,call_list_size>0);
linphone_gtk_enable_conference_button(lc,call_list_size>1);
} else {
linphone_gtk_enable_transfer_button(lc,FALSE);
linphone_gtk_enable_conference_button(lc,FALSE);
......@@ -1939,6 +1939,7 @@ static void linphone_gtk_init_main_window(void){
G_CALLBACK (linphone_gtk_close), main_window);
#ifdef HAVE_GTK_OSX
{
gtk_widget_show(main_window);
GtkWidget *menubar=linphone_gtk_get_widget(main_window,"menubar1");
GtkosxApplication *theMacApp = gtkosx_application_get();
gtkosx_application_set_menu_bar(theMacApp,GTK_MENU_SHELL(menubar));
......
......@@ -53,7 +53,7 @@
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="ajustment_auto_answer_delay">
<property name="upper">60000</property>
<property name="upper">30000</property>
<property name="value">2000</property>
<property name="step_increment">100</property>
<property name="page_increment">500</property>
......
......@@ -1397,9 +1397,16 @@ static void linphone_gtk_show_media_encryption(GtkWidget *pb){
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(linphone_gtk_get_widget(pb,"media_encryption_mandatory_checkbox")),
linphone_core_is_media_encryption_mandatory(lc));
gtk_combo_box_set_active(GTK_COMBO_BOX(linphone_gtk_get_widget(pb,"chat_lime_combo")), linphone_core_lime_enabled(lc));
gtk_widget_set_sensitive(linphone_gtk_get_widget(pb,"chat_lime_combo"), linphone_core_lime_available(lc));
gtk_widget_set_visible (linphone_gtk_get_widget(pb,"chat_lime_label"), 0);
gtk_widget_set_visible (linphone_gtk_get_widget(pb,"chat_lime_combo"), 0);
if (linphone_gtk_get_ui_config_int("lime_experimental_feature", 0)){
gtk_widget_set_visible (linphone_gtk_get_widget(pb,"chat_lime_label"), 1);
gtk_widget_set_visible (linphone_gtk_get_widget(pb,"chat_lime_combo"), 1);
gtk_combo_box_set_active(GTK_COMBO_BOX(linphone_gtk_get_widget(pb,"chat_lime_combo")), linphone_core_lime_enabled(lc));
gtk_widget_set_sensitive(linphone_gtk_get_widget(pb,"chat_lime_combo"), linphone_core_lime_available(lc));
}
g_object_unref(G_OBJECT(model));
}
......
......@@ -196,14 +196,17 @@ static void on_controls_response(GtkWidget *dialog, int response_id, GtkWidget *
}
static void on_controls_destroy(GtkWidget *w){
static gboolean on_controls_destroy(GtkWidget *w){
GtkWidget *video_window=(GtkWidget*)g_object_get_data(G_OBJECT(w),"video_window");
gint timeout=GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w),"timeout"));
if (timeout!=0){
g_source_remove(timeout);
g_object_set_data(G_OBJECT(w),"timeout",GINT_TO_POINTER(0));
}
g_object_set_data(G_OBJECT(video_window),"controls",NULL);
if (video_window) {
g_object_set_data(G_OBJECT(video_window),"controls",NULL);
}
return FALSE;
}
static gboolean _set_video_controls_position(GtkWidget *video_window){
......@@ -228,7 +231,8 @@ static void set_video_controls_position(GtkWidget *video_window){
}
static gboolean video_window_moved(GtkWidget *widget, GdkEvent *event, gpointer user_data){
set_video_controls_position(widget);
/*Workaround to Video window bug on Windows. */
/* set_video_controls_position(widget); */
return FALSE;
}
......
......@@ -230,7 +230,7 @@ public interface LinphoneChatMessage {
/**
* Fulfill a chat message char by char. Message linked to a Real Time Text Call send char in realtime following RFC 4103/T.140
* To commit a message, use #linphone_chat_room_send_message
* @param[in] character T.140 char
* @param character T.140 char
* @throw LinphoneCoreExeption .
*/
void putChar(long character) throws LinphoneCoreException;
......
......@@ -1063,7 +1063,7 @@ public interface LinphoneCore {
LinphoneFriendList[] getFriendLists();
/**
* @brief Set my presence status
* Set my presence status
* @param minutes_away how long in away
* @param alternative_contact sip uri used to redirect call in state LinphoneStatusMoved
* @param status OnlineStatus
......@@ -1071,18 +1071,18 @@ public interface LinphoneCore {
*/
void setPresenceInfo(int minutes_away, String alternative_contact, OnlineStatus status);
/**
* @brief Get my presence status
* Get my presence status
* @return OnlineStatus
* @deprecated Use getPresenceModel() instead
*/
OnlineStatus getPresenceInfo();
/**
* @brief Set my presence status
* Set my presence status
* @param presence #LinphonePresenceModel
*/
void setPresenceModel(PresenceModel presence);
/**
* @brief Get my presence status
* Get my presence status
* @return A #PresenceModel object, or null if no presence model has been set.
*/
PresenceModel getPresenceModel();
......@@ -1610,7 +1610,7 @@ public interface LinphoneCore {
* which could result in an active call.
* Eg: don't start a new call if one is in outgoing ringing.
* Eg: don't merge to conference either as it could result
* in two active calls (conference and accepted call).
* in two active calls (conference and accepted call).
* @return
*/
boolean soundResourcesLocked();
......
......@@ -109,18 +109,18 @@ public interface LinphoneFriend {
*/
boolean isPresenceReceived();
/**
* @brief Get the status of a friend
* Get the status of a friend
* @return OnlineStatus
* @deprecated Use getPresenceModel() instead
*/
OnlineStatus getStatus();
/**
* @brief Get the presence information of a friend
* Get the presence information of a friend
* @return A #PresenceModel object, or null if the friend do not have presence information (in which case he is considered offline)
*/
PresenceModel getPresenceModel();
/**
* @brief Set the presence information of a friend
* Set the presence information of a friend
* @param presenceModel A #PresenceModel object
*/
void setPresenceModel(PresenceModel presenceModel);
......
......@@ -22,39 +22,39 @@ package org.linphone.core;
public interface PresenceActivity {
/**
* @brief Gets the string representation of a presence activity.
* Gets the string representation of a presence activity.
* @return A String representing the given activity.
*/
String toString();
/**
* @brief Gets the activity type of a presence activity.
* Gets the activity type of a presence activity.
* @return The #PresenceActivityType of the activity.
*/
PresenceActivityType getType();
/**
* @brief Sets the type of activity of a presence activity.
* @param[in] acttype The activity type to set for the activity.
* Sets the type of activity of a presence activity.
* @param acttype The activity type to set for the activity.
* @return 0 if successful, a value < 0 in case of error.
*/
int setType(PresenceActivityType type);
/**
* @brief Gets the description of a presence activity.
* Gets the description of a presence activity.
* @return A String containing the description of the presence activity, or null if no description is specified.
*/
String getDescription();
/**
* @brief Sets the description of a presence activity.
* @param[in] description An additional description of the activity. Can be null if no additional description is to be added.
* Sets the description of a presence activity.
* @param description An additional description of the activity. Can be null if no additional description is to be added.
* @return 0 if successful, a value < 0 in case of error.
*/
int setDescription(String description);
/**
* @brief Gets the native pointer for this object.
* Gets the native pointer for this object.
*/
long getNativePtr();
......
......@@ -22,46 +22,46 @@ package org.linphone.core;
public interface PresenceModel {
/**
* @brief Gets the basic status of a presence model.
* Gets the basic status of a presence model.
* @return The #BasicStatus of the #PresenceModel object.
*/
PresenceBasicStatus getBasicStatus();
/**
* @brief Sets the basic status of a presence model.
* @param[in] basic_status The #BasicStatus to set for the #PresenceModel object.
* Sets the basic status of a presence model.
* @param basic_status The #BasicStatus to set for the #PresenceModel object.
* @return 0 if successful, a value < 0 in case of error.
*/
int setBasicStatus(PresenceBasicStatus basic_status);
/**
* @brief Gets the timestamp of a presence model.
* Gets the timestamp of a presence model.
* @return The timestamp of the #LinphonePresenceModel object or -1 on error.
*/
long getTimestamp();
/**
* @brief Gets the contact of a presence model.
* Gets the contact of a presence model.
* @return A string containing the contact, or null if no contact is found.
*/
String getContact();
/**
* @brief Sets the contact of a presence model.
* Sets the contact of a presence model.
* @param contact The contact string to set.
*/
void setContact(String contact);
/**
* @brief Gets the first activity of a presence model (there is usually only one).
* Gets the first activity of a presence model (there is usually only one).
* @return A #PresenceActivity object if successful, null otherwise.
*/
PresenceActivity getActivity();
/**
* @brief Sets the activity of a presence model (limits to only one activity).
* @param[in] activity The #PresenceActivityType to set for the model.
* @param[in] description An additional description of the activity to set for the model. Can be null if no additional description is to be added.
* Sets the activity of a presence model (limits to only one activity).
* @param activity The #PresenceActivityType to set for the model.
* @param description An additional description of the activity to set for the model. Can be null if no additional description is to be added.
* @return 0 if successful, a value < 0 in case of error.
*
* WARNING: This method will modify the basic status of the model according to the activity being set.
......@@ -70,42 +70,42 @@ public interface PresenceModel {
int setActivity(PresenceActivityType activity, String description);
/**
* @brief Gets the number of activities included in the presence model.
* Gets the number of activities included in the presence model.
* @return The number of activities included in the #PresenceModel object.
*/
long getNbActivities();
/**
* @brief Gets the nth activity of a presence model.
* Gets the nth activity of a presence model.
* @param idx The index of the activity to get (the first activity having the index 0).
* @return A #PresenceActivity object if successful, null otherwise.
*/
PresenceActivity getNthActivity(long idx);
/**
* @brief Adds an activity to a presence model.
* @param[in] activity The #PresenceActivity to add to the model.
* Adds an activity to a presence model.
* @param activity The #PresenceActivity to add to the model.
* @return 0 if successful, a value < 0 in case of error.
*/
int addActivity(PresenceActivity activity);
/**
* @brief Clears the activities of a presence model.
* Clears the activities of a presence model.
* @return 0 if successful, a value < 0 in case of error.
*/
int clearActivities();
/**
* @brief Gets the first note of a presence model (there is usually only one).
* @param[in] lang The language of the note to get. Can be null to get a note that has no language specified or to get the first note whatever language it is written into.
* Gets the first note of a presence model (there is usually only one).
* @param lang The language of the note to get. Can be null to get a note that has no language specified or to get the first note whatever language it is written into.
* @return A #PresenceNote object if successful, null otherwise.
*/
PresenceNote getNote(String lang);
/**
* @brief Adds a note to a presence model.
* @param[in] note_content The note to be added to the presence model.
* @param[in] lang The language of the note to be added. Can be null if no language is to be specified for the note.
* Adds a note to a presence model.
* @param note_content The note to be added to the presence model.
* @param lang The language of the note to be added. Can be null if no language is to be specified for the note.
* @return 0 if successful, a value < 0 in case of error.
*
* Only one note for each language can be set, so e.g. setting a note for the 'fr' language if there is only one will replace the existing one.
......@@ -113,59 +113,59 @@ public interface PresenceModel {
int addNote(String note_content, String lang);
/**
* @brief Clears all the notes of a presence model.
* Clears all the notes of a presence model.
* @return 0 if successful, a value < 0 in case of error.
*/
int clearNotes();
/**
* @brief Gets the number of services included in the presence model.
* Gets the number of services included in the presence model.
* @return The number of services included in the #PresenceModel object.
*/
long getNbServices();
/**
* @brief Gets the nth service of a presence model.
* @param[in] idx The index of the service to get (the first service having the index 0).
* Gets the nth service of a presence model.
* @param idx The index of the service to get (the first service having the index 0).
* @return A #PresenceService object if successful, null otherwise.
*/
PresenceService getNthService(long idx);
/**
* @brief Adds a service to a presence model.
* @param[in] service The #PresenceService object to add to the model.
* Adds a service to a presence model.
* @param service The #PresenceService object to add to the model.
* @return 0 if successful, a value < 0 in case of error.
*/
int addService(PresenceService service);
/**
* @brief Clears the services of a presence model.
* Clears the services of a presence model.
* @return 0 if successful, a value < 0 in case of error.
*/
int clearServices();
/**
* @brief Gets the number of persons included in the presence model.
* Gets the number of persons included in the presence model.
* @return The number of persons included in the #PresenceModel object.
*/
long getNbPersons();
/**
* @brief Gets the nth person of a presence model.
* @param[in] idx The index of the person to get (the first person having the index 0).
* Gets the nth person of a presence model.
* @param idx The index of the person to get (the first person having the index 0).
* @return A pointer to a #PresencePerson object if successful, null otherwise.
*/
PresencePerson getNthPerson(long idx);
/**
* @brief Adds a person to a presence model.
* @param[in] person The #PresencePerson object to add to the model.
* Adds a person to a presence model.
* @param person The #PresencePerson object to add to the model.
* @return 0 if successful, a value < 0 in case of error.
*/
int addPerson(PresencePerson person);
/**
* @brief Clears the persons of a presence model.
* Clears the persons of a presence model.
* @return 0 if successful, a value < 0 in case of error.
*/
int clearPersons();
......
......@@ -22,33 +22,33 @@ package org.linphone.core;
public interface PresenceNote {
/**
* @brief Gets the content of a presence note.
* Gets the content of a presence note.
* @return A String with the content of the presence note.
*/
String getContent();
/**
* @brief Sets the content of a presence note.
* @param[in] content The content of the note.
* Sets the content of a presence note.
* @param content The content of the note.
* @return 0 if successful, a value < 0 in case of error.
*/
int setContent(String content);
/**
* @brief Gets the language of a presence note.
* Gets the language of a presence note.
* @return A String containing the language of the presence note, or null if no language is specified.
*/
String getLang();
/**
* @brief Sets the language of a presence note.
* @param[in] lang The language of the note.
* Sets the language of a presence note.
* @param lang The language of the note.
* @return 0 if successful, a value < 0 in case of error.
*/
int setLang(String lang);
/**
* @brief Gets the native pointer for this object.
* Gets the native pointer for this object.
*/
long getNativePtr();
......
......@@ -22,98 +22,98 @@ package org.linphone.core;
public interface PresencePerson {
/**
* @brief Gets the id of a presence person.
* Gets the id of a presence person.
* @return A string containing the id.
*/
String getId();
/**
* @brief Sets the id of a presence person.
* @param[in] id The id string to set. Can be null to generate it automatically.
* Sets the id of a presence person.
* @param id The id string to set. Can be null to generate it automatically.
* @return 0 if successful, a value < 0 in case of error.
*/
int setId(String id);
/**
* @brief Gets the number of activities included in the presence person.
* Gets the number of activities included in the presence person.
* @return The number of activities included in the #PresencePerson object.
*/
long getNbActivities();
/**
* @brief Gets the nth activity of a presence person.
* @param[in] idx The index of the activity to get (the first activity having the index 0).
* Gets the nth activity of a presence person.
* @param idx The index of the activity to get (the first activity having the index 0).
* @return A #PresenceActivity object if successful, null otherwise.
*/
PresenceActivity getNthActivity(long idx);
/**
* @brief Adds an activity to a presence person.
* @param[in] activity The #PresenceActivity object to add to the person.
* Adds an activity to a presence person.
* @param activity The #PresenceActivity object to add to the person.
* @return 0 if successful, a value < 0 in case of error.
*/
int addActivity(PresenceActivity activity);
/**
* @brief Clears the activities of a presence person.
* Clears the activities of a presence person.
* @return 0 if successful, a value < 0 in case of error.