]> sjero.net Git - linphone/commitdiff
Merge branch 'master' of git.linphone.org:linphone
authorSylvain Berfini <Sylvain.Berfini@Belledonne-Communications.com>
Wed, 13 Jun 2012 08:15:20 +0000 (10:15 +0200)
committerSylvain Berfini <Sylvain.Berfini@Belledonne-Communications.com>
Wed, 13 Jun 2012 08:15:20 +0000 (10:15 +0200)
1  2 
coreapi/linphonecore.c
coreapi/linphonecore.h

diff --combined coreapi/linphonecore.c
index ada24237d8e417b4d311096c957ab6319970cec7,3bc23b34480071b2f36c196f1685f8ec3f35728a..9caa52dc3d20364c0f925fa9509c3a0e53eaebbd
@@@ -1319,6 -1319,7 +1319,7 @@@ int linphone_core_set_audio_codecs(Linp
  {
        if (lc->codecs_conf.audio_codecs!=NULL) ms_list_free(lc->codecs_conf.audio_codecs);
        lc->codecs_conf.audio_codecs=codecs;
+       _linphone_core_codec_config_write(lc);
        return 0;
  }
  
@@@ -1333,6 -1334,7 +1334,7 @@@ int linphone_core_set_video_codecs(Linp
  {
        if (lc->codecs_conf.video_codecs!=NULL) ms_list_free(lc->codecs_conf.video_codecs);
        lc->codecs_conf.video_codecs=codecs;
+       _linphone_core_codec_config_write(lc);
        return 0;
  }
  
@@@ -1827,6 -1829,7 +1829,7 @@@ void linphone_core_iterate(LinphoneCor
                        ms_message("incoming call ringing for %i seconds",elapsed);
                        if (elapsed>lc->sip_conf.inc_timeout){
                                call->log->status=LinphoneCallMissed;
+                               call->reason=LinphoneReasonNotAnswered;
                                linphone_core_terminate_call(lc,call);
                        }
                }
@@@ -2569,7 -2572,8 +2572,8 @@@ int linphone_core_abort_call(LinphoneCo
  
  static void terminate_call(LinphoneCore *lc, LinphoneCall *call){
        if (call->state==LinphoneCallIncomingReceived){
-               call->reason=LinphoneReasonDeclined;
+               if (call->reason!=LinphoneReasonNotAnswered)
+                       call->reason=LinphoneReasonDeclined;
        }
        /*stop ringing*/
        if (lc->ringstream!=NULL) {
@@@ -3485,14 -3489,6 +3489,14 @@@ void linphone_core_clear_call_logs(Linp
        call_logs_write_to_config_file(lc);
  }
  
 +int linphone_core_get_missed_calls_count(LinphoneCore *lc) {
 +      return lc->missed_calls;
 +}
 +
 +void linphone_core_remove_call_log(LinphoneCore *lc, void *data) {
 +      lc->call_logs = ms_list_remove(lc->call_logs, data);
 +}
 +
  static void toggle_video_preview(LinphoneCore *lc, bool_t val){
  #ifdef VIDEO_ENABLED
        if (val){
@@@ -4269,38 -4265,43 +4273,43 @@@ void video_config_uninit(LinphoneCore *
                ms_free(lc->video_conf.cams);
  }
  
- void codecs_config_uninit(LinphoneCore *lc)
- {
-       PayloadType *pt;
-       codecs_config_t *config=&lc->codecs_conf;
-       MSList *node;
-       char key[50];
-       int index;
-       index=0;
-       for(node=config->audio_codecs;node!=NULL;node=ms_list_next(node)){
-               pt=(PayloadType*)(node->data);
+ void _linphone_core_codec_config_write(LinphoneCore *lc){
+       if (linphone_core_ready(lc)){
+               PayloadType *pt;
+               codecs_config_t *config=&lc->codecs_conf;
+               MSList *node;
+               char key[50];
+               int index;
+               index=0;
+               for(node=config->audio_codecs;node!=NULL;node=ms_list_next(node)){
+                       pt=(PayloadType*)(node->data);
+                       sprintf(key,"audio_codec_%i",index);
+                       lp_config_set_string(lc->config,key,"mime",pt->mime_type);
+                       lp_config_set_int(lc->config,key,"rate",pt->clock_rate);
+                       lp_config_set_int(lc->config,key,"enabled",linphone_core_payload_type_enabled(lc,pt));
+                       index++;
+               }
                sprintf(key,"audio_codec_%i",index);
-               lp_config_set_string(lc->config,key,"mime",pt->mime_type);
-               lp_config_set_int(lc->config,key,"rate",pt->clock_rate);
-               lp_config_set_int(lc->config,key,"enabled",linphone_core_payload_type_enabled(lc,pt));
-               index++;
-       }
-       sprintf(key,"audio_codec_%i",index);
-       lp_config_clean_section (lc->config,key);
-       index=0;
-       for(node=config->video_codecs;node!=NULL;node=ms_list_next(node)){
-               pt=(PayloadType*)(node->data);
+               lp_config_clean_section (lc->config,key);
+               index=0;
+               for(node=config->video_codecs;node!=NULL;node=ms_list_next(node)){
+                       pt=(PayloadType*)(node->data);
+                       sprintf(key,"video_codec_%i",index);
+                       lp_config_set_string(lc->config,key,"mime",pt->mime_type);
+                       lp_config_set_int(lc->config,key,"rate",pt->clock_rate);
+                       lp_config_set_int(lc->config,key,"enabled",linphone_core_payload_type_enabled(lc,pt));
+                       lp_config_set_string(lc->config,key,"recv_fmtp",pt->recv_fmtp);
+                       index++;
+               }
                sprintf(key,"video_codec_%i",index);
-               lp_config_set_string(lc->config,key,"mime",pt->mime_type);
-               lp_config_set_int(lc->config,key,"rate",pt->clock_rate);
-               lp_config_set_int(lc->config,key,"enabled",linphone_core_payload_type_enabled(lc,pt));
-               lp_config_set_string(lc->config,key,"recv_fmtp",pt->recv_fmtp);
-               index++;
+               lp_config_clean_section (lc->config,key);
        }
-       sprintf(key,"video_codec_%i",index);
-       lp_config_clean_section (lc->config,key);
+ }
  
+ static void codecs_config_uninit(LinphoneCore *lc)
+ {
+       _linphone_core_codec_config_write(lc);
        ms_list_free(lc->codecs_conf.audio_codecs);
        ms_list_free(lc->codecs_conf.video_codecs);
  }
@@@ -4592,6 -4593,8 +4601,8 @@@ const char *linphone_reason_to_string(L
                        return "Call declined";
                case LinphoneReasonNotFound:
                        return "User not found";
+               case LinphoneReasonNotAnswered:
+                       return "Not answered";
        }
        return "unknown error";
  }
diff --combined coreapi/linphonecore.h
index a59353a21b9b7bcae572130a6edfa835560eb896,ae3f9cb15d3426f4ac286a0e6c181f62e431a8e9..531950d72f40acb665e863add7e4d937bb8485f5
@@@ -205,7 -205,8 +205,8 @@@ enum _LinphoneReason
        LinphoneReasonNoResponse, /**<No response received from remote*/
        LinphoneReasonBadCredentials, /**<Authentication failed due to bad or missing credentials*/
        LinphoneReasonDeclined, /**<The call has been declined*/
-       LinphoneReasonNotFound,
+       LinphoneReasonNotFound, /**<Destination of the calls was not found.*/
+       LinphoneReasonNotAnswered
  };
  
  typedef enum _LinphoneReason LinphoneReason;
@@@ -969,8 -970,6 +970,8 @@@ void linphone_core_set_rtp_no_xmit_on_a
  /* returns a list of LinphoneCallLog */
  const MSList * linphone_core_get_call_logs(LinphoneCore *lc);
  void linphone_core_clear_call_logs(LinphoneCore *lc);
 +int linphone_core_get_missed_calls_count(LinphoneCore *lc);
 +void linphone_core_remove_call_log(LinphoneCore *lc, void *data);
  
  /* video support */
  bool_t linphone_core_video_supported(LinphoneCore *lc);