From e2e10a104fbbed6a21b8f55c71070378300b6aa7 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Sun, 29 Apr 2007 12:20:33 +0000 Subject: Fixed ticket #241: Crash on Windows when no sound device is available git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/pjproject-0.5-stable@1223 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip-apps/src/pjsua/main.c | 3 +++ pjsip-apps/src/pjsua/pjsua_app.c | 5 +++-- pjsip/src/pjsua-lib/pjsua_core.c | 17 ++++++++--------- pjsip/src/pjsua-lib/pjsua_media.c | 6 +++--- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/pjsip-apps/src/pjsua/main.c b/pjsip-apps/src/pjsua/main.c index f3160092..b7f6af5d 100644 --- a/pjsip-apps/src/pjsua/main.c +++ b/pjsip-apps/src/pjsua/main.c @@ -82,6 +82,9 @@ int main(int argc, char *argv[]) app_main(); app_destroy(); + /* This is on purpose */ + app_destroy(); + return 0; } diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c index 96841c22..e4b51de3 100644 --- a/pjsip-apps/src/pjsua/pjsua_app.c +++ b/pjsip-apps/src/pjsua/pjsua_app.c @@ -95,6 +95,7 @@ static pj_str_t uri_arg; #ifdef STEREO_DEMO static void stereo_demo(); #endif +pj_status_t app_destroy(void); /***************************************************************************** * Configuration manipulation @@ -3155,7 +3156,7 @@ pj_status_t app_init(int argc, char *argv[]) return PJ_SUCCESS; on_error: - pjsua_destroy(); + app_destroy(); return status; } @@ -3167,7 +3168,7 @@ pj_status_t app_main(void) /* Start pjsua */ status = pjsua_start(); if (status != PJ_SUCCESS) { - pjsua_destroy(); + app_destroy(); return status; } diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index 796b1c6d..bf659aa7 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -700,20 +700,19 @@ PJ_DEF(pj_status_t) pjsua_destroy(void) pj_pool_release(pjsua_var.pool); pjsua_var.pool = NULL; pj_caching_pool_destroy(&pjsua_var.cp); - } + PJ_LOG(4,(THIS_FILE, "PJSUA destroyed...")); - PJ_LOG(4,(THIS_FILE, "PJSUA destroyed...")); + /* End logging */ + if (pjsua_var.log_file) { + pj_file_close(pjsua_var.log_file); + pjsua_var.log_file = NULL; + } - /* End logging */ - if (pjsua_var.log_file) { - pj_file_close(pjsua_var.log_file); - pjsua_var.log_file = NULL; + /* Shutdown PJLIB */ + pj_shutdown(); } - /* Shutdown PJLIB */ - pj_shutdown(); - /* Clear pjsua_var */ pj_bzero(&pjsua_var, sizeof(pjsua_var)); diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 0e52f5ed..f8bacd35 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -463,10 +463,10 @@ pj_status_t pjsua_media_subsys_destroy(void) pjmedia_endpt_destroy(pjsua_var.med_endpt); pjsua_var.med_endpt = NULL; - } - /* Deinitialize sound subsystem */ - pjmedia_snd_deinit(); + /* Deinitialize sound subsystem */ + pjmedia_snd_deinit(); + } /* Reset RTP port */ next_rtp_port = 0; -- cgit v1.2.3