From 89da122d499765d284777e7a31cac94560615892 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 25 Mar 2011 11:12:32 +0100 Subject: [PATCH 01/10] macos gtk build works, with bundle --- Makefile.am | 3 +- README.macos | 58 ++++++++++++++++++++++++----- build/macos/environment.sh | 2 +- build/macos/linphone.bundle | 12 +++--- configure.ac | 37 +++++++++++++------ gtk/Makefile.am | 8 ++-- gtk/gtkrc.mac | 1 + gtk/main.c | 74 ++++++++++++++++--------------------- 8 files changed, 119 insertions(+), 76 deletions(-) create mode 100644 gtk/gtkrc.mac diff --git a/Makefile.am b/Makefile.am index cef6503c6..bdfbefcb7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -59,7 +59,7 @@ ISS_SCRIPT_PATH=$(shell cd $(top_srcdir) && pwd)/$(ISS_SCRIPT) #path to Inno Setup 5 compiler ISCC=ISCC.exe PACKAGE_WIN32_FILELIST=$(PACKAGE)-win32.filelist -PACKAGE_BUNDLE_FILE=$(top_srcdir)/build/macos/reltime.bundle +PACKAGE_BUNDLE_FILE=$(top_srcdir)/build/macos/$(PACKAGE).bundle EXTRA_DIST = config.rpath BUGS linphone.kdevelop \ intltool-extract.in \ @@ -194,6 +194,7 @@ bundle: LINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \ LIBLINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \ ige-mac-bundler $(PACKAGE_BUNDLE_FILE) + cd $$HOME/Desktop && zip -r Linphone-$(VERSION).app.zip $$HOME/Desktop/Linphone.app diff --git a/README.macos b/README.macos index 251b62275..4cc36071c 100644 --- a/README.macos +++ b/README.macos @@ -1,4 +1,51 @@ -Compiling linphone on macos X +********************************** +* Compiling linphone on macos X * +********************************** + + +You have two options: using gtk-osx framework (http://gtk-osx.sourceforge.net/) which results in a Linphone GTK well integrated into Mac OS +environment. The other option is using MacPort, in which case Linphone will run as an X11 application inside Mac OS. + +At the date of March 25, 2011, no video support is available yet. + + +Compiling using gtk-osx +======================= + +Requirements: +* gtk-osx framework +* xcode (for gcc) +* macport (to retrieve dependencies easily, such as libosip2, libeXosip2, libspeex +* linphone git tree + +Steps: + +- Install gtk-osx jhbuild environment as described at +http://sourceforge.net/apps/trac/gtk-osx/wiki/Build +It will build gtk for osx as well as many dependencies. + +- Install ige-mac-bundler following instructions here (git clone method is preferred): +http://sourceforge.net/apps/trac/gtk-osx/wiki/Bundle + +- Install some linphone dependencies with macports + $ port install speex-dev + $ port install osip2 + $ port install eXosip2 + +- Now you can compile linphone + +$ jhbuild shell +$ PKG_CONFIG_PATH=$HOME/gtk/inst/lib/pkgconfig:/opt/local/lib/pkgconfig/ ./configure --disable-video --disable-strict +$ make + +- You can generate a bundle using +$ make bundle + +The bundle is generated in ~/Desktop/Linphone and can safely be exported to other places and computers. + + +Compiling using MacPort +======================= This procedure works for audio, video still not fully supported. It was tested on macos X (leopard) on september 2009. @@ -16,7 +63,6 @@ Steps: - gettext - intltool - gtk2 - - libglade2 - speex-dev - osip2 - eXosip2 @@ -30,14 +76,6 @@ Steps: * install to /opt/local sudo make install -********************* -Using gtk-osx (jhbuild environnment) - -After installing jhbuild and get gtk built, - -$ jhbuild shell - -$ PKG_CONFIG_PATH=$HOME/gtk/inst/lib/pkgconfig:/opt/local/lib/pkgconfig/ ./configure --disable-video --disable-strict diff --git a/build/macos/environment.sh b/build/macos/environment.sh index f331e77a1..69191845b 100644 --- a/build/macos/environment.sh +++ b/build/macos/environment.sh @@ -1,3 +1,3 @@ export EXTRA_ARGS="--workdir $bundle_res" -unset GDK_PIXBUF_MODULE_FILE + diff --git a/build/macos/linphone.bundle b/build/macos/linphone.bundle index 2b1e1f7ff..b38d550ac 100644 --- a/build/macos/linphone.bundle +++ b/build/macos/linphone.bundle @@ -80,7 +80,7 @@ - ${prefix}/lib/gdk-pixbuf-2.0/* + ${prefix}/lib/gdk-pixbuf-2.0 - - ${prefix:linphone}/share/* + + ${prefix:linphone}/share - + + ${project}/../../gtk/gtkrc.mac + ${prefix:linphone}/share/sounds/linphone/ diff --git a/configure.ac b/configure.ac index 66e65a12f..81042d2bb 100644 --- a/configure.ac +++ b/configure.ac @@ -61,6 +61,7 @@ case $target_os in *darwin*) dnl use macport installation ACLOCAL_MACOS_FLAGS="-I /opt/local/share/aclocal" + build_macos=yes ;; esac @@ -132,8 +133,9 @@ AC_ARG_ENABLE(gtk_ui, if test "$gtk_ui" = "true" ; then PKG_CHECK_MODULES(LIBGTK, gtk+-2.0 >= 2.4.0 gthread-2.0) - AC_SUBST(LIBGTK_CFLAGS) - AC_SUBST(LIBGTK_LIBS) + if test "$build_macos" = "yes" ; then + PKG_CHECK_MODULES(LIBGTKMAC,[ige-mac-integration >= 0.9.7 ]) + fi else echo "GTK interface compilation is disabled." fi @@ -159,13 +161,13 @@ AC_ARG_WITH( configdir, AC_DEFINE_UNQUOTED(LINPHONE_CONFIG_DIR,"$configdir",[Windows appdata subdir where linphonerc can be found]) -AC_ARG_ENABLE(manual, - [ --disable-manual Do not attempt to build html linphone's user documentation], +AC_ARG_ENABLE(relativeprefix, + [ --enable-relativeprefix Build a linphone that finds its resources relatively to the directory where it is installed], [case "${enableval}" in - yes) build_manual=yes ;; - no) build_manual=false ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-manual) ;; - esac],[build_manual=yes]) + yes) relativeprefix=yes ;; + no) relativeprefix=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-relativeprefix) ;; + esac],[relativeprefix=auto]) AC_ARG_ENABLE(date, [ --enable-date Use build date in internal version number], @@ -232,9 +234,22 @@ else package_prefix=${prefix} fi -if test x$mingw_found = xyes ; then -dnl allow binaries to install everywhere -package_prefix="." + + +if test "$relativeprefix" = "auto" ; then + case $target_os in + *darwin*) + relativeprefix=yes + ;; + *mingw*) + relativeprefix=yes + ;; + esac +fi + +if test "$relativeprefix" = "yes" ; then + dnl allow binaries to install everywhere + package_prefix="." fi dnl Set PACKAGE_LOCALE_DIR in config.h. diff --git a/gtk/Makefile.am b/gtk/Makefile.am index 58f530659..c51234eb3 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -21,7 +21,8 @@ EXTRA_DIST= $(PIXMAPS) \ linphone.iss \ $(LINPHONE_ICO_RC_FILE) \ $(LINPHONE_ICO_FILE) - + gtkrc \ + gtkrc.mac if BUILD_GTK_UI @@ -48,7 +49,7 @@ linphone_SOURCES= \ linphone_LDADD=$(ORTP_LIBS) \ $(MEDIASTREAMER_LIBS) \ $(top_builddir)/coreapi/liblinphone.la \ - $(LIBGTK_LIBS) $(INTLLIBS) + $(LIBGTK_LIBS) $(LIBGTKMAC_LIBS) $(INTLLIBS) if BUILD_WIN32 @@ -71,8 +72,7 @@ endif AM_CFLAGS= -DIN_LINPHONE -I$(top_srcdir)/coreapi/ \ $(MEDIASTREAMER_CFLAGS) \ $(ORTP_CFLAGS) \ - $(STRICT_OPTIONS) $(LIBGTK_CFLAGS) $(IPV6_CFLAGS) \ - $(OSIP_CFLAGS) + $(STRICT_OPTIONS) $(LIBGTK_CFLAGS) $(LIBGTKMAC_CFLAGS) $(IPV6_CFLAGS) version_date.h: $(top_srcdir)/configure.ac diff --git a/gtk/gtkrc.mac b/gtk/gtkrc.mac new file mode 100644 index 000000000..8a39b0056 --- /dev/null +++ b/gtk/gtkrc.mac @@ -0,0 +1 @@ +include "../../share/themes/Mac4Lin_GTK_Aqua_v1.0/gtk-2.0/gtkrc" diff --git a/gtk/main.c b/gtk/main.c index b35b8f4c4..85e46d76d 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -17,7 +17,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -//#define USE_LIBGLADE 1 #define VIDEOSELFVIEW_DEFAULT 1 @@ -25,15 +24,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "lpconfig.h" - -#ifdef USE_LIBGLADE -#include -#endif - #include #include #include +#ifdef __APPLE__ +#include +#endif + #ifdef WIN32 #define chdir _chdir #endif @@ -246,40 +244,6 @@ static void linphone_gtk_configure_window(GtkWidget *w, const char *window_name) } } -#ifdef USE_LIBGLADE - -GtkWidget *linphone_gtk_create_window(const char *window_name){ - GtkWidget *w; - GladeXML *gxml; - char path[2048]; - snprintf(path,sizeof(path),"%s/%s.glade",BUILD_TREE_XML_DIR,window_name); - if (access(path,F_OK)!=0){ - snprintf(path,sizeof(path),"%s/%s.glade",INSTALLED_XML_DIR,window_name); - if (access(path,F_OK)!=0){ - g_error("Could not locate neither %s/%s.glade and %s/%s.glade .",BUILD_TREE_XML_DIR,window_name, - INSTALLED_XML_DIR,window_name); - return NULL; - } - } - gxml=glade_xml_new(path,NULL,NULL); - glade_xml_signal_autoconnect(gxml); - w=glade_xml_get_widget(gxml,window_name); - if (w==NULL) g_error("Could not retrieve '%s' window from xml file",window_name); - linphone_gtk_configure_window(w,window_name); - return w; -} - -GtkWidget *linphone_gtk_get_widget(GtkWidget *window, const char *name){ - GtkWidget *w; - GladeXML *gxml=glade_get_widget_tree(window); - if (gxml==NULL) g_error("Could not retrieve XML tree of window %s",name); - w=glade_xml_get_widget(gxml,name); - if (w==NULL) g_error("Could not retrieve widget %s",name); - return GTK_WIDGET(w); -} - -#else - static int get_ui_file(const char *name, char *path, int pathsize){ snprintf(path,pathsize,"%s/%s.ui",BUILD_TREE_XML_DIR,name); if (access(path,F_OK)!=0){ @@ -358,7 +322,6 @@ GtkWidget *linphone_gtk_get_widget(GtkWidget *window, const char *name){ return GTK_WIDGET(w); } -#endif void linphone_gtk_display_something(GtkMessageType type,const gchar *message){ GtkWidget *dialog; @@ -1219,7 +1182,11 @@ static void linphone_gtk_configure_main_window(){ if (title) { gtk_window_set_title(GTK_WINDOW(w),title); #if GTK_CHECK_VERSION(2,16,0) +#ifdef __APPLE__ + gtk_menu_item_set_label(GTK_MENU_ITEM(linphone_gtk_get_widget(w,"main_menu")),_("Windows")); +#else gtk_menu_item_set_label(GTK_MENU_ITEM(linphone_gtk_get_widget(w,"main_menu")),title); +#endif #endif } if (start_call_icon){ @@ -1299,7 +1266,11 @@ gboolean linphone_gtk_close(GtkWidget *mw){ linphone_core_terminate_all_calls(lc); } linphone_core_enable_video_preview(lc,FALSE); +#ifdef __APPLE__ + gtk_window_iconify(GTK_WINDOW(mw)); +#else gtk_widget_hide(mw); +#endif return TRUE; } @@ -1324,6 +1295,16 @@ static void linphone_gtk_init_main_window(){ /*prevent the main window from being destroyed by a user click on WM controls, instead we hide it*/ g_signal_connect (G_OBJECT (main_window), "delete-event", G_CALLBACK (linphone_gtk_close), main_window); +#ifdef __APPLE__ + { + GtkWidget *menubar=linphone_gtk_get_widget(main_window,"menubar1"); + gtk_widget_destroy(linphone_gtk_get_widget(main_window,"imagemenuitem5")); + GtkOSXApplication *theMacApp = (GtkOSXApplication*)g_object_new(GTK_TYPE_OSX_APPLICATION, NULL); + gtk_osxapplication_set_menu_bar(theMacApp,GTK_MENU_SHELL(menubar)); + gtk_widget_hide(menubar); + gtk_osxapplication_ready(theMacApp); + } +#endif } @@ -1470,8 +1451,11 @@ int main(int argc, char *argv[]){ add_pixmap_directory("pixmaps"); add_pixmap_directory(PACKAGE_DATA_DIR "/pixmaps/linphone"); - - +#ifdef __APPLE__ + GtkOSXApplication *theMacApp = (GtkOSXApplication*)g_object_new(GTK_TYPE_OSX_APPLICATION, NULL); + g_signal_connect(G_OBJECT(theMacApp),"NSApplicationDidBecomeActive",(GCallback)linphone_gtk_show_main_window,NULL); + g_signal_connect(G_OBJECT(theMacApp),"NSApplicationWillTerminate",(GCallback)gtk_main_quit,NULL); +#endif the_ui=linphone_gtk_create_window("main"); @@ -1488,7 +1472,9 @@ int main(int argc, char *argv[]){ gtk_timeout_add(30,(GtkFunction)linphone_gtk_iterate,(gpointer)linphone_gtk_get_core()); gtk_timeout_add(30,(GtkFunction)linphone_gtk_check_logs,(gpointer)NULL); linphone_gtk_init_main_window(); +#ifndef __APPLE__ linphone_gtk_init_status_icon(); +#endif if (!iconified){ linphone_gtk_show_main_window(); linphone_gtk_check_soundcards(); @@ -1500,8 +1486,10 @@ int main(int argc, char *argv[]){ gdk_threads_leave(); linphone_gtk_destroy_log_window(); linphone_core_destroy(the_core); +#ifndef __APPLE__ /*workaround a bug on win32 that makes status icon still present in the systray even after program exit.*/ gtk_status_icon_set_visible(icon,FALSE); +#endif free(progpath); return 0; } From 7b9ae474c6d6c0c429fef9e1b1a2927f4465beb4 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 25 Mar 2011 12:26:34 +0100 Subject: [PATCH 02/10] fix zip generation on macos --- Makefile.am | 2 +- README.macos | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index bdfbefcb7..3d533352f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -194,7 +194,7 @@ bundle: LINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \ LIBLINPHONE_INSTALL_PREFIX=$(INSTALLDIR_WITH_PREFIX) \ ige-mac-bundler $(PACKAGE_BUNDLE_FILE) - cd $$HOME/Desktop && zip -r Linphone-$(VERSION).app.zip $$HOME/Desktop/Linphone.app + cd $$HOME/Desktop && zip -r Linphone-$(VERSION).app.zip Linphone.app diff --git a/README.macos b/README.macos index 4cc36071c..ed5fdd41d 100644 --- a/README.macos +++ b/README.macos @@ -35,7 +35,8 @@ http://sourceforge.net/apps/trac/gtk-osx/wiki/Bundle - Now you can compile linphone $ jhbuild shell -$ PKG_CONFIG_PATH=$HOME/gtk/inst/lib/pkgconfig:/opt/local/lib/pkgconfig/ ./configure --disable-video --disable-strict +$ PKG_CONFIG_PATH=$HOME/gtk/inst/lib/pkgconfig:/opt/local/lib/pkgconfig/ ./configure --disable-video --disable-strict --with-gsm=/opt/local +#assuming you have gsm installed in /opt/local. However gsm is optional. $ make - You can generate a bundle using From 2c770922b73a9da0b5337103b6e673a0607de112 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 25 Mar 2011 14:39:39 +0100 Subject: [PATCH 03/10] protect osip_list_set_empty() fix spurious "no response" errors at end of calls --- coreapi/sal_eXosip2.c | 21 ++++++++++++++++----- coreapi/sal_eXosip2.h | 1 + 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/coreapi/sal_eXosip2.c b/coreapi/sal_eXosip2.c index 38638716e..1c04eb190 100644 --- a/coreapi/sal_eXosip2.c +++ b/coreapi/sal_eXosip2.c @@ -30,9 +30,10 @@ static void text_received(Sal *sal, eXosip_event_t *ev); void _osip_list_set_empty(osip_list_t *l, void (*freefunc)(void*)){ void *data; - while((data=osip_list_get(l,0))!=NULL){ + while(!osip_list_eol(l,0)) { + data=osip_list_get(l,0); osip_list_remove(l,0); - freefunc(data); + if (data) freefunc(data); } } @@ -168,6 +169,7 @@ SalOp * sal_op_new(Sal *sal){ op->masquerade_via=FALSE; op->auto_answer_asked=FALSE; op->auth_info=NULL; + op->terminated=FALSE; return op; } @@ -778,6 +780,7 @@ int sal_call_terminate(SalOp *h){ if (err!=0){ ms_warning("Exosip could not terminate the call: cid=%i did=%i", h->cid,h->did); } + h->terminated=TRUE; return 0; } @@ -1004,6 +1007,7 @@ static int call_proceeding(Sal *sal, eXosip_event_t *ev){ eXosip_lock(); eXosip_call_terminate(ev->cid,ev->did); eXosip_unlock(); + op->terminated=TRUE; return -1; } if (ev->did>0) @@ -1080,6 +1084,7 @@ static void call_terminated(Sal *sal, eXosip_event_t *ev){ } sal->callbacks.call_terminated(op,from!=NULL ? from : sal_op_get_from(op)); if (from) osip_free(from); + op->terminated=TRUE; } static void call_released(Sal *sal, eXosip_event_t *ev){ @@ -1088,7 +1093,7 @@ static void call_released(Sal *sal, eXosip_event_t *ev){ ms_warning("No op associated to this call_released()"); return; } - if (ev->response==NULL){ + if (!op->terminated){ /* no response received so far */ call_failure(sal,ev); } @@ -1871,8 +1876,14 @@ int sal_register(SalOp *h, const char *proxy, const char *from, int expires){ if (h->rid==-1){ eXosip_lock(); h->rid=eXosip_register_build_initial_register(from,proxy,NULL,expires,&msg); - if (contact) register_set_contact(msg,contact); - sal_add_register(h->base.root,h); + if (msg){ + if (contact) register_set_contact(msg,contact); + sal_add_register(h->base.root,h); + }else{ + ms_error("Could not build initial register."); + eXosip_unlock(); + return -1; + } }else{ eXosip_lock(); eXosip_register_build_register(h->rid,expires,&msg); diff --git a/coreapi/sal_eXosip2.h b/coreapi/sal_eXosip2.h index 4db203362..d55263627 100644 --- a/coreapi/sal_eXosip2.h +++ b/coreapi/sal_eXosip2.h @@ -65,6 +65,7 @@ struct SalOp{ bool_t reinvite; bool_t masquerade_via; bool_t auto_answer_asked; + bool_t terminated; const SalAuthInfo *auth_info; }; From cbdabdfbb398059c3fe70f8d1ff003fe4ea1dfa5 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 25 Mar 2011 23:41:48 +0100 Subject: [PATCH 04/10] ready for a new release ? --- NEWS | 9 +++++++++ coreapi/misc.c | 4 ++-- mediastreamer2 | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 687b27f98..4d5bcf7c5 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,12 @@ +linphone-3.4.3 -- March 28, 2011 + * Fully ported to mac os x with gtk-osx (menu integration, bundle generation with "make bundle", sound I/O improved) but still audio only + * Fix stupid warning "no response" that sometimes arrived at end of calls + * limit the size of the log window (to prevent memory drain) + * limit the size of the SDP message by removing unnecessary information (for well known codecs, for H264). + This is to prevent SIP messages from being discarded by routers on the internet when they exceeds in size the internet MTU. + * other sip bugfixes + Requires mediastreamer-2.7.3 + linphone-3.4.2 -- March 3rd, 2011 * fix problems with webcams on windows Requires mediastreamer-2.7.2 diff --git a/coreapi/misc.c b/coreapi/misc.c index 799de3aee..9cce4c480 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -763,10 +763,10 @@ void _linphone_core_configure_resolver(){ /*bionic declares _res but does not define nor export it !!*/ #ifdef ANDROID /*timeout and attempts are the same as retrans and retry, but are android specific names.*/ - setenv("RES_OPTIONS","timeout:1 attempts:2 retrans:1 retry:2",1); + setenv("RES_OPTIONS","timeout:2 attempts:2 retrans:2 retry:2",1); #else res_init(); - _res.retrans=1; /*retransmit every second*/ + _res.retrans=2; /*retransmit every two seconds*/ _res.retry=2; /*only two times per DNS server*/ #endif } diff --git a/mediastreamer2 b/mediastreamer2 index 5c139fbb2..6f2612b01 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 5c139fbb21e7715b36a0b7e609d821f74dd01b8d +Subproject commit 6f2612b01543400f4a00d0ec8373fe2cb249aa56 From 531f9c8bba2753c48924422a2ea32b142a9db92c Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 28 Mar 2011 10:29:20 +0200 Subject: [PATCH 05/10] fix play dtmf --- coreapi/linphonecore.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 062e345b0..86a13f52b 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -3587,11 +3587,6 @@ void linphone_core_play_dtmf(LinphoneCore *lc, char dtmf, int duration_ms){ return; } - // Play DTMF only when in call - if (!linphone_core_in_call(lc)) { - return; - } - if (duration_ms>0) ms_filter_call_method(f, MS_DTMF_GEN_PLAY, &dtmf); else ms_filter_call_method(f, MS_DTMF_GEN_START, &dtmf); From e11983452ab9c376b8b851db1bc660392f68d0c9 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Mon, 28 Mar 2011 12:51:00 +0200 Subject: [PATCH 06/10] update msstreamer2 with compilation fixes for iPhone --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 6f2612b01..d81b5016b 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 6f2612b01543400f4a00d0ec8373fe2cb249aa56 +Subproject commit d81b5016b2badea5a3c8b335a0cb9ea000e69711 From b132094af0ca13d1b3b072076e592078d4fb56e3 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 28 Mar 2011 20:52:03 +0200 Subject: [PATCH 07/10] ready for 3.4.3 --- configure.ac | 2 +- coreapi/linphonecall.c | 30 ++++++++++++++++++++++++++++++ coreapi/linphonecore.h | 6 ++++++ mediastreamer2 | 2 +- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 81042d2bb..fe399168a 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([linphone],[3.4.2],[linphone-developers@nongnu.org]) +AC_INIT([linphone],[3.4.3],[linphone-developers@nongnu.org]) AC_CANONICAL_SYSTEM AC_CONFIG_SRCDIR([coreapi/linphonecore.c]) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 9a21ca65b..8959c01b9 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -1079,3 +1079,33 @@ bool_t linphone_call_echo_limiter_enabled(const LinphoneCall *call){ } } +/** + * Returns the measured sound volume played locally (received from remote) + * It is expressed in dbm0. +**/ +float linphone_call_get_play_volume(LinphoneCall *call){ + AudioStream *st=call->audiostream; + if (st && st->volsend){ + float vol=0; + ms_filter_call_method(st->volsend,MS_VOLUME_GET,&vol); + return vol; + + } + return LINPHONE_VOLUME_DB_LOWEST; +} + +/** + * Returns the measured sound volume recorded locally (sent to remote) + * It is expressed in dbm0. +**/ +float linphone_call_get_record_volume(LinphoneCall *call){ + AudioStream *st=call->audiostream; + if (st && st->volrecv){ + float vol=0; + ms_filter_call_method(st->volrecv,MS_VOLUME_GET,&vol); + return vol; + + } + return LINPHONE_VOLUME_DB_LOWEST; +} + diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 81ab3e949..6e55ea2e3 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -253,6 +253,8 @@ bool_t linphone_call_camera_enabled(const LinphoneCall *lc); int linphone_call_take_video_snapshot(LinphoneCall *call, const char *file); LinphoneReason linphone_call_get_reason(const LinphoneCall *call); const char *linphone_call_get_remote_user_agent(LinphoneCall *call); +float linphone_call_get_play_volume(LinphoneCall *call); +float linphone_call_get_record_volume(LinphoneCall *call); void *linphone_call_get_user_pointer(LinphoneCall *call); void linphone_call_set_user_pointer(LinphoneCall *call, void *user_pointer); /** @@ -283,6 +285,10 @@ void linphone_call_enable_echo_limiter(LinphoneCall *call, bool_t val); * @ingroup media_parameters **/ bool_t linphone_call_echo_limiter_enabled(const LinphoneCall *call); + +/*keep this in sync with mediastreamer2/msvolume.h*/ +#define LINPHONE_VOLUME_DB_LOWEST (-120) /**< Lowest measured that can be returned.*/ + /** * @addtogroup proxies * @{ diff --git a/mediastreamer2 b/mediastreamer2 index d81b5016b..63788c7a3 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit d81b5016b2badea5a3c8b335a0cb9ea000e69711 +Subproject commit 63788c7a33857e6994da7138d40efa6fff6f6c92 From 6a0dd36de7f8d8dbe3fb3311f53916648174c8c4 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 28 Mar 2011 20:57:03 +0200 Subject: [PATCH 08/10] update ms2 and ortp --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 63788c7a3..e45966097 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 63788c7a33857e6994da7138d40efa6fff6f6c92 +Subproject commit e4596609778a09c3b6550480b3eaa20a5433991b diff --git a/oRTP b/oRTP index 7f1adcfc3..98c3a0cb9 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 7f1adcfc38c3dc3286a4e4c3d68be403fb5b9a4c +Subproject commit 98c3a0cb9b17568b1aabe038f8cb36caa9b1a147 From 5534ed3242f680b7d21ddaea4b33445ba96c9ea5 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 28 Mar 2011 21:24:23 +0200 Subject: [PATCH 09/10] fix makedistcheck --- build/macos/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/macos/Makefile.am b/build/macos/Makefile.am index 5e2f376d5..e90eb2ffe 100644 --- a/build/macos/Makefile.am +++ b/build/macos/Makefile.am @@ -1,3 +1,3 @@ -EXTRA_DIST=linphone.bundle.in environment.sh +EXTRA_DIST=linphone.bundle environment.sh Info-linphone.plist.in From 74148020deb7c8c1b098b171853bb4f1f8583a27 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 29 Mar 2011 15:59:09 +0200 Subject: [PATCH 10/10] fix macport compilation --- configure.ac | 4 ++-- gtk/main.c | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac index fe399168a..fbb99d282 100644 --- a/configure.ac +++ b/configure.ac @@ -130,11 +130,11 @@ AC_ARG_ENABLE(gtk_ui, *) AC_MSG_ERROR(bad value ${enableval} for --enable-gtk_ui) ;; esac],[gtk_ui=true]) - if test "$gtk_ui" = "true" ; then PKG_CHECK_MODULES(LIBGTK, gtk+-2.0 >= 2.4.0 gthread-2.0) - if test "$build_macos" = "yes" ; then + if test "$enable_x11" = "false" ; then PKG_CHECK_MODULES(LIBGTKMAC,[ige-mac-integration >= 0.9.7 ]) + AC_DEFINE([HAVE_GTK_OSX],[1],[Defined when gtk osx is used]) fi else echo "GTK interface compilation is disabled." diff --git a/gtk/main.c b/gtk/main.c index 85e46d76d..df281a799 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include -#ifdef __APPLE__ +#ifdef HAVE_GTK_OSX #include #endif @@ -1182,7 +1182,7 @@ static void linphone_gtk_configure_main_window(){ if (title) { gtk_window_set_title(GTK_WINDOW(w),title); #if GTK_CHECK_VERSION(2,16,0) -#ifdef __APPLE__ +#ifdef HAVE_GTK_OSX gtk_menu_item_set_label(GTK_MENU_ITEM(linphone_gtk_get_widget(w,"main_menu")),_("Windows")); #else gtk_menu_item_set_label(GTK_MENU_ITEM(linphone_gtk_get_widget(w,"main_menu")),title); @@ -1266,7 +1266,7 @@ gboolean linphone_gtk_close(GtkWidget *mw){ linphone_core_terminate_all_calls(lc); } linphone_core_enable_video_preview(lc,FALSE); -#ifdef __APPLE__ +#ifdef HAVE_GTK_OSX gtk_window_iconify(GTK_WINDOW(mw)); #else gtk_widget_hide(mw); @@ -1295,7 +1295,7 @@ static void linphone_gtk_init_main_window(){ /*prevent the main window from being destroyed by a user click on WM controls, instead we hide it*/ g_signal_connect (G_OBJECT (main_window), "delete-event", G_CALLBACK (linphone_gtk_close), main_window); -#ifdef __APPLE__ +#ifdef HAVE_GTK_OSX { GtkWidget *menubar=linphone_gtk_get_widget(main_window,"menubar1"); gtk_widget_destroy(linphone_gtk_get_widget(main_window,"imagemenuitem5")); @@ -1451,7 +1451,7 @@ int main(int argc, char *argv[]){ add_pixmap_directory("pixmaps"); add_pixmap_directory(PACKAGE_DATA_DIR "/pixmaps/linphone"); -#ifdef __APPLE__ +#ifdef HAVE_GTK_OSX GtkOSXApplication *theMacApp = (GtkOSXApplication*)g_object_new(GTK_TYPE_OSX_APPLICATION, NULL); g_signal_connect(G_OBJECT(theMacApp),"NSApplicationDidBecomeActive",(GCallback)linphone_gtk_show_main_window,NULL); g_signal_connect(G_OBJECT(theMacApp),"NSApplicationWillTerminate",(GCallback)gtk_main_quit,NULL); @@ -1472,7 +1472,7 @@ int main(int argc, char *argv[]){ gtk_timeout_add(30,(GtkFunction)linphone_gtk_iterate,(gpointer)linphone_gtk_get_core()); gtk_timeout_add(30,(GtkFunction)linphone_gtk_check_logs,(gpointer)NULL); linphone_gtk_init_main_window(); -#ifndef __APPLE__ +#ifndef HAVE_GTK_OSX linphone_gtk_init_status_icon(); #endif if (!iconified){ @@ -1486,7 +1486,7 @@ int main(int argc, char *argv[]){ gdk_threads_leave(); linphone_gtk_destroy_log_window(); linphone_core_destroy(the_core); -#ifndef __APPLE__ +#ifndef HAVE_GTK_OSX /*workaround a bug on win32 that makes status icon still present in the systray even after program exit.*/ gtk_status_icon_set_visible(icon,FALSE); #endif