From 090216b600c228d3cfebb76f7d389a5557ddf79e Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Wed, 25 Apr 2012 07:13:05 +0000 Subject: 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 --- pjmedia/src/test/vid_codec_test.c | 10 +++++----- pjmedia/src/test/vid_dev_test.c | 4 ++++ pjmedia/src/test/vid_port_test.c | 4 ++++ pjsip-apps/src/samples/vid_streamutil.c | 6 ++++++ 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 @@ -190,6 +190,10 @@ on_return: if (status != PJ_SUCCESS) 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) { 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 @@ -147,6 +147,10 @@ on_return: if (status != PJ_SUCCESS) 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) { 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); -- cgit v1.2.3