From 8c5296fba455adc138bce1d8c643659db575c7b1 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Tue, 21 Jan 2014 10:59:25 +0000 Subject: Re #1519 [into SVN trunk]: AudioMedia objects must not be destroyed before unregistered from conf bridge. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4708 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua2/media.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'pjsip') diff --git a/pjsip/src/pjsua2/media.cpp b/pjsip/src/pjsua2/media.cpp index 175d5987..0c478feb 100644 --- a/pjsip/src/pjsua2/media.cpp +++ b/pjsip/src/pjsua2/media.cpp @@ -247,14 +247,20 @@ AudioMediaPlayer::AudioMediaPlayer() AudioMediaPlayer::~AudioMediaPlayer() { - if (playerId != PJSUA_INVALID_ID) + if (playerId != PJSUA_INVALID_ID) { + unregisterMediaPort(); pjsua_player_destroy(playerId); + } } void AudioMediaPlayer::createPlayer(const string &file_name, unsigned options) throw(Error) { + if (playerId != PJSUA_INVALID_ID) { + PJSUA2_RAISE_ERROR(PJ_EEXISTS); + } + pj_str_t pj_name = str2Pj(file_name); PJSUA2_CHECK_EXPR( pjsua_player_create(&pj_name, @@ -272,6 +278,10 @@ void AudioMediaPlayer::createPlaylist(const StringVector &file_names, unsigned options) throw(Error) { + if (playerId != PJSUA_INVALID_ID) { + PJSUA2_RAISE_ERROR(PJ_EEXISTS); + } + pj_str_t pj_files[MAX_FILE_NAMES]; unsigned i, count = 0; pj_str_t pj_lbl = str2Pj(label); @@ -317,8 +327,10 @@ AudioMediaRecorder::AudioMediaRecorder() AudioMediaRecorder::~AudioMediaRecorder() { - if (recorderId != PJSUA_INVALID_ID) + if (recorderId != PJSUA_INVALID_ID) { + unregisterMediaPort(); pjsua_recorder_destroy(recorderId); + } } void AudioMediaRecorder::createRecorder(const string &file_name, @@ -329,6 +341,10 @@ void AudioMediaRecorder::createRecorder(const string &file_name, { PJ_UNUSED_ARG(max_size); + if (recorderId != PJSUA_INVALID_ID) { + PJSUA2_RAISE_ERROR(PJ_EEXISTS); + } + pj_str_t pj_name = str2Pj(file_name); PJSUA2_CHECK_EXPR( pjsua_recorder_create(&pj_name, -- cgit v1.2.3