diff --git a/coreapi/conference.cc b/coreapi/conference.cc index 50d1680c7..d743cd280 100644 --- a/coreapi/conference.cc +++ b/coreapi/conference.cc @@ -664,8 +664,10 @@ void LocalConference::onCallTerminating(LinphoneCall *call) { convertConferenceToCall(); } if (remote_count==0){ - if (m_localParticipantStream) + if (m_localParticipantStream){ removeLocalEndpoint(); + linphone_core_soundcard_hint_check(m_core); + } if (m_recordEndpoint){ ms_audio_conference_remove_member(m_conf, m_recordEndpoint); ms_audio_endpoint_destroy(m_recordEndpoint); diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index a6b0b7c5a..d5fae6965 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -6342,6 +6342,8 @@ void linphone_core_soundcard_hint_check( LinphoneCore* lc){ bool_t use_rtp_io = lp_config_get_int(lc->config, "sound", "rtp_io", FALSE); bool_t use_rtp_io_enable_local_output = lp_config_get_int(lc->config, "sound", "rtp_io_enable_local_output", FALSE); + if (lc->conf_ctx && linphone_conference_get_size(lc->conf_ctx) >= 1) return; + /* check if the remaining calls are paused */ while( the_calls ){ call = reinterpret_cast(the_calls->data);