summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-04-29 12:20:33 +0000
committerBenny Prijono <bennylp@teluu.com>2007-04-29 12:20:33 +0000
commite2e10a104fbbed6a21b8f55c71070378300b6aa7 (patch)
tree33fc23f3362bef66c2a4df492604ea2ae7c0a8b9
parent2ad45e29734123876cae1ff6e1248f396da997a6 (diff)
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
-rw-r--r--pjsip-apps/src/pjsua/main.c3
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c5
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c17
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c6
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;