Ticket #1059: 1059.diff
File 1059.diff, 2.8 KB (added by nanang, 14 years ago) |
---|
-
pjsip/include/pjsua-lib/pjsua_internal.h
323 323 pjmedia_snd_port *snd_port; /**< Sound port. */ 324 324 pj_timer_entry snd_idle_timer;/**< Sound device idle timer. */ 325 325 pjmedia_master_port *null_snd; /**< Master port for null sound. */ 326 pj_bool_t poll_null_snd; /**< Should poll master port? */ 326 327 pjmedia_port *null_port; /**< Null port. */ 327 328 328 329 -
pjsip/src/pjsua-lib/pjsua_media.c
2721 2721 /* Close existing sound device */ 2722 2722 static void close_snd_dev(void) 2723 2723 { 2724 /* Stop polling master port (for null audio device) */ 2725 pjsua_var.poll_null_snd = PJ_FALSE; 2726 2724 2727 /* Close sound device */ 2725 2728 if (pjsua_var.snd_port) { 2726 2729 pjmedia_aud_dev_info cap_info, play_info; … … 2846 2849 PJ_DEF(pj_status_t) pjsua_set_null_snd_dev(void) 2847 2850 { 2848 2851 pjmedia_port *conf_port; 2852 unsigned master_port_opt = 0; 2849 2853 pj_status_t status; 2850 2854 2851 2855 /* Close existing sound device */ … … 2861 2865 conf_port = pjmedia_conf_get_master_port(pjsua_var.mconf); 2862 2866 pj_assert(conf_port != NULL); 2863 2867 2868 /* Ticket #1059: master port should avoid thread creation when media 2869 * subsystem is configured with zero thread. 2870 * 2871 * Exception applies for Symbian platforms, as it can still achieve 2872 * asynchronous timer using Active Object (instead of thread). 2873 */ 2874 #if !defined(PJ_SYMBIAN) || PJ_SYMBIAN == 0 2875 if (pjsua_var.media_cfg.thread_cnt == 0) { 2876 master_port_opt |= PJMEDIA_CLOCK_NO_ASYNC; 2877 pjsua_var.poll_null_snd = PJ_TRUE; 2878 } 2879 #endif 2880 2864 2881 /* Create master port, connecting port0 of the conference bridge to 2865 2882 * a null port. 2866 2883 */ 2867 2884 status = pjmedia_master_port_create(pjsua_var.snd_pool, pjsua_var.null_port, 2868 conf_port, 0, &pjsua_var.null_snd); 2885 conf_port, master_port_opt, 2886 &pjsua_var.null_snd); 2869 2887 if (status != PJ_SUCCESS) { 2870 2888 pjsua_perror(THIS_FILE, "Unable to create null sound device", 2871 2889 status); -
pjsip/src/pjsua-lib/pjsua_core.c
1457 1457 pj_time_val tv; 1458 1458 pj_status_t status; 1459 1459 1460 /* Poll master port (for null audio device) */ 1461 if (pjsua_var.poll_null_snd) { 1462 while (pjmedia_master_port_wait(pjsua_var.null_snd, PJ_FALSE, NULL)); 1463 } 1464 1460 1465 tv.sec = 0; 1461 1466 tv.msec = msec_timeout; 1462 1467 pj_time_val_normalize(&tv);