summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2012-04-25 07:13:05 +0000
committerLiong Sauw Ming <ming@teluu.com>2012-04-25 07:13:05 +0000
commit090216b600c228d3cfebb76f7d389a5557ddf79e (patch)
tree994b6935892566d2151e2323ab2a82d875089a35
parente43fcd9c2fc0484c6a09759aa2b13b16f1d91364 (diff)
Re #1446 (misc): Fix possible crash if video ports are destroyed in the wrong order (i.e. client port must be destroyed last).
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4084 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/src/test/vid_codec_test.c10
-rw-r--r--pjmedia/src/test/vid_dev_test.c4
-rw-r--r--pjmedia/src/test/vid_port_test.c4
-rw-r--r--pjsip-apps/src/samples/vid_streamutil.c6
4 files changed, 19 insertions, 5 deletions
diff --git a/pjmedia/src/test/vid_codec_test.c b/pjmedia/src/test/vid_codec_test.c
index a4a5baaa..0b493f74 100644
--- a/pjmedia/src/test/vid_codec_test.c
+++ b/pjmedia/src/test/vid_codec_test.c
@@ -417,14 +417,14 @@ on_return:
if (status != PJ_SUCCESS) {
PJ_PERROR(3, (THIS_FILE, status, " error"));
}
- if (capture) {
+ if (capture)
pjmedia_vid_port_stop(capture);
- pjmedia_vid_port_destroy(capture);
- }
- if (renderer) {
+ if (renderer)
pjmedia_vid_port_stop(renderer);
+ if (capture)
+ pjmedia_vid_port_destroy(capture);
+ if (renderer)
pjmedia_vid_port_destroy(renderer);
- }
if (codec) {
pjmedia_event_unsubscribe(NULL, &codec_on_event, &codec_port_data,
codec);
diff --git a/pjmedia/src/test/vid_dev_test.c b/pjmedia/src/test/vid_dev_test.c
index 35206fb7..f991bb54 100644
--- a/pjmedia/src/test/vid_dev_test.c
+++ b/pjmedia/src/test/vid_dev_test.c
@@ -191,6 +191,10 @@ on_return:
PJ_PERROR(3, (THIS_FILE, status, " error"));
if (capture)
+ pjmedia_vid_port_stop(capture);
+ if (renderer)
+ pjmedia_vid_port_stop(renderer);
+ if (capture)
pjmedia_vid_port_destroy(capture);
if (renderer) {
pjmedia_event_unsubscribe(NULL, &vid_event_cb, NULL, renderer);
diff --git a/pjmedia/src/test/vid_port_test.c b/pjmedia/src/test/vid_port_test.c
index 634f612f..542d2663 100644
--- a/pjmedia/src/test/vid_port_test.c
+++ b/pjmedia/src/test/vid_port_test.c
@@ -148,6 +148,10 @@ on_return:
PJ_PERROR(3, (THIS_FILE, status, " error"));
if (capture)
+ pjmedia_vid_port_stop(capture);
+ if (renderer)
+ pjmedia_vid_port_stop(renderer);
+ if (capture)
pjmedia_vid_port_destroy(capture);
if (renderer) {
pjmedia_event_unsubscribe(NULL, &vid_event_cb, NULL, renderer);
diff --git a/pjsip-apps/src/samples/vid_streamutil.c b/pjsip-apps/src/samples/vid_streamutil.c
index 68fbc2fa..10eb0d69 100644
--- a/pjsip-apps/src/samples/vid_streamutil.c
+++ b/pjsip-apps/src/samples/vid_streamutil.c
@@ -891,6 +891,12 @@ int main(int argc, char *argv[])
/* Start deinitialization: */
on_exit:
+ /* Stop video devices */
+ if (capture)
+ pjmedia_vid_port_stop(capture);
+ if (renderer)
+ pjmedia_vid_port_stop(renderer);
+
/* Stop and destroy file clock */
if (play_clock) {
pjmedia_clock_stop(play_clock);