if (call->resultdesc && !sal_media_description_empty(call->resultdesc))
{
- if (call->state==LinphoneCallPausedByRemote &&
+ if ((call->state==LinphoneCallPausedByRemote || call->state==LinphoneCallPaused) &&
sal_media_description_has_dir(call->resultdesc,SalStreamSendRecv) && strcmp(call->resultdesc->addr,"0.0.0.0")!=0){
/*make sure we can be resumed */
if (lc->current_call!=NULL && lc->current_call!=call){
linphone_call_unref(call);
}
+const char *linphone_call_state_to_string(LinphoneCallState cs){
+ switch (cs){
+ case LinphoneCallIdle:
+ return "LinphoneCallIdle";
+ case LinphoneCallIncomingReceived:
+ return "LinphoneCallIncomingReceived";
+ case LinphoneCallOutgoingInit:
+ return "LinphoneCallOutgoingInit";
+ case LinphoneCallOutgoingProgress:
+ return "LinphoneCallOutgoingProgress";
+ case LinphoneCallOutgoingRinging:
+ return "LinphoneCallOutgoingRinging";
+ case LinphoneCallOutgoingEarlyMedia:
+ return "LinphoneCallOutgoingEarlyMedia";
+ case LinphoneCallConnected:
+ return "LinphoneCallConnected";
+ case LinphoneCallStreamsRunning:
+ return "LinphoneCallStreamsRunning";
+ case LinphoneCallPausing:
+ return "LinphoneCallPausing";
+ case LinphoneCallPaused:
+ return "LinphoneCallPaused";
+ case LinphoneCallResuming:
+ return "LinphoneCallResuming";
+ case LinphoneCallRefered:
+ return "LinphoneCallRefered";
+ case LinphoneCallError:
+ return "LinphoneCallRefered";
+ case LinphoneCallEnd:
+ return "LinphoneCallEnd";
+ case LinphoneCallPausedByRemote:
+ return "LinphoneCallPausedByRemote";
+ }
+ return "undefined state";
+}
+
void linphone_call_set_state(LinphoneCall *call, LinphoneCallState cstate, const char *message){
LinphoneCore *lc=call->core;
bool_t finalize_call=FALSE;
if (call->state!=cstate){
+ ms_message("Call %p: moving from state %s to %s",call,linphone_call_state_to_string(call->state),
+ linphone_call_state_to_string(cstate));
if (cstate!=LinphoneCallRefered){
/*LinphoneCallRefered is rather an event, not a state.
Indeed it does not change the state of the call (still paused or running)*/
/*start the call even if the OPTIONS reply did not arrive*/
linphone_core_start_invite(lc,call,NULL);
}
- if (call->dir==LinphoneCallIncoming && call->state==LinphoneCallOutgoingRinging){
- elapsed=curtime-call->start_time;
- ms_message("incoming call ringing for %i seconds",elapsed);
- if (elapsed>lc->sip_conf.inc_timeout){
- call->log->status=LinphoneCallMissed;
- linphone_core_terminate_call(lc,call);
- }
+ if (call->dir==LinphoneCallIncoming && call->state==LinphoneCallOutgoingRinging){
+ elapsed=curtime-call->start_time;
+ ms_message("incoming call ringing for %i seconds",elapsed);
+ if (elapsed>lc->sip_conf.inc_timeout){
+ call->log->status=LinphoneCallMissed;
+ linphone_core_terminate_call(lc,call);
}
+ }
}
call = linphone_core_get_current_call(lc);
if(call)
}
if (lc->ringstream==NULL){
MSSndCard *ringcard=lc->sound_conf.lsd_card ?lc->sound_conf.lsd_card : lc->sound_conf.ring_sndcard;
- lc->ringstream=ring_start(NULL,0,ringcard);
+ const char *playfile;
+#ifdef ANDROID
+ playfile="/data/data/org.linphone/files/silence.wav";
+#else
+ playfile=NULL;
+#endif
+ lc->ringstream=ring_start(playfile,0,ringcard);
lc->dmfs_playing_start_time=time(NULL);
}else{
if (lc->dmfs_playing_start_time!=0)
int i;
for(i=0;i<md->nstreams;++i){
const SalStreamDescription *ss=&md->streams[i];
- if (ss->dir!=stream_dir) return FALSE;
+ if (ss->dir==stream_dir) return TRUE;
}
- return TRUE;
+ return FALSE;
}
static void assign_string(char **str, const char *arg){
break;
case LinphoneCallResuming:
linphone_gtk_enable_hold_button(call,TRUE,TRUE);
+ linphone_gtk_in_call_view_set_in_call (call);
break;
case LinphoneCallPausing:
linphone_gtk_enable_hold_button(call,TRUE,FALSE);
<object class="GtkHBox" id="hbox7">
<property name="visible">True</property>
<child>
- <object class="GtkToggleButton" id="main_mute">
+ <object class="GtkButton" id="main_mute">
<property name="label" translatable="yes">Mute</property>
- <property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
- <signal name="toggled" handler="linphone_gtk_mute_toggled"/>
+ <signal name="clicked" handler="linphone_gtk_mute_clicked"/>
</object>
<packing>
<property name="fill">False</property>