summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2012-05-22 23:13:22 +0000
committerBenny Prijono <bennylp@teluu.com>2012-05-22 23:13:22 +0000
commit67a79c1015da7353843ea14405441b19b0dfc955 (patch)
tree4cc521ba403ac91a288eef54dbd6fe56b2a563f6
parentaae22a60d14fd0956dee56deabd9ccec13d8d02e (diff)
Fixed #1515: Sound device is not closed when the call fails to connect (thanks Régis Montoya for the report)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4145 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/include/pjsua-lib/pjsua_internal.h1
-rw-r--r--pjsip/src/pjsua-lib/pjsua_aud.c10
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c2
3 files changed, 8 insertions, 5 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua_internal.h b/pjsip/include/pjsua-lib/pjsua_internal.h
index ac4ab31f..4b2dc947 100644
--- a/pjsip/include/pjsua-lib/pjsua_internal.h
+++ b/pjsip/include/pjsua-lib/pjsua_internal.h
@@ -769,6 +769,7 @@ pj_status_t pjsua_aud_channel_update(pjsua_call_media *call_med,
pjmedia_stream_info *si,
const pjmedia_sdp_session *local_sdp,
const pjmedia_sdp_session *remote_sdp);
+void pjsua_check_snd_dev_idle();
/*
* Video
diff --git a/pjsip/src/pjsua-lib/pjsua_aud.c b/pjsip/src/pjsua-lib/pjsua_aud.c
index 7588266d..4b44cfd1 100644
--- a/pjsip/src/pjsua-lib/pjsua_aud.c
+++ b/pjsip/src/pjsua-lib/pjsua_aud.c
@@ -377,7 +377,7 @@ on_error:
}
/* Check if sound device is idle. */
-static void check_snd_dev_idle()
+void pjsua_check_snd_dev_idle()
{
unsigned call_cnt;
@@ -439,7 +439,7 @@ static void close_snd_timer_cb( pj_timer_heap_t *th,
PJSUA_LOCK();
if (entry->id) {
- PJ_LOG(4,(THIS_FILE,"Closing sound device after idle for %d seconds",
+ PJ_LOG(4,(THIS_FILE,"Closing sound device after idle for %d second(s)",
pjsua_var.media_cfg.snd_auto_close_time));
entry->id = PJ_FALSE;
@@ -532,7 +532,7 @@ void pjsua_aud_stop_stream(pjsua_call_media *call_med)
call_med->strm.a.stream = NULL;
}
- check_snd_dev_idle();
+ pjsua_check_snd_dev_idle();
}
/*
@@ -791,7 +791,7 @@ PJ_DEF(pj_status_t) pjsua_conf_remove_port(pjsua_conf_port_id id)
pj_status_t status;
status = pjmedia_conf_remove_port(pjsua_var.mconf, (unsigned)id);
- check_snd_dev_idle();
+ pjsua_check_snd_dev_idle();
return status;
}
@@ -957,7 +957,7 @@ PJ_DEF(pj_status_t) pjsua_conf_disconnect( pjsua_conf_port_id source,
pj_log_push_indent();
status = pjmedia_conf_disconnect_port(pjsua_var.mconf, source, sink);
- check_snd_dev_idle();
+ pjsua_check_snd_dev_idle();
pj_log_pop_indent();
return status;
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index 948c54f7..460c269e 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -3128,6 +3128,8 @@ static void pjsua_call_on_state_changed(pjsip_inv_session *inv,
/* Reset call */
reset_call(call->index);
+ pjsua_check_snd_dev_idle();
+
PJSUA_UNLOCK();
}
pj_log_pop_indent();