diff --git a/sflphone-common/src/audio/audiortp/AudioRtpFactory.cpp b/sflphone-common/src/audio/audiortp/AudioRtpFactory.cpp index a6cdceab22a0da11467c995a8866a3c56856be46..d7d8f5648380369d352c160660b9964f49a4c46f 100644 --- a/sflphone-common/src/audio/audiortp/AudioRtpFactory.cpp +++ b/sflphone-common/src/audio/audiortp/AudioRtpFactory.cpp @@ -172,6 +172,7 @@ void AudioRtpFactory::stop (void) } _rtpSession->stopRtpThread(); + delete _rtpSession; _rtpSession = NULL; } catch (...) { diff --git a/sflphone-common/src/audio/audiortp/AudioRtpSession.cpp b/sflphone-common/src/audio/audiortp/AudioRtpSession.cpp index 9bd49b20b1ceb3515eef8ab77075030e0a5b5b3d..4c75dc3ae77b48dfad87746c03154ef2c0a1a9fa 100644 --- a/sflphone-common/src/audio/audiortp/AudioRtpSession.cpp +++ b/sflphone-common/src/audio/audiortp/AudioRtpSession.cpp @@ -302,14 +302,13 @@ int AudioRtpSession::startRtpThread (AudioCodec* audiocodec) void AudioRtpSession::stopRtpThread () { + _queue->disableStack(); if (_type != Zrtp) { AudioSymmetricRtpSession *self = dynamic_cast<AudioSymmetricRtpSession*>(this); assert(self); _debug ("AudioSymmetricRtpSession: Stopping main thread"); self->stopSymmetricRtpThread(); } - - _queue->disableStack(); } diff --git a/sflphone-common/src/audio/audiortp/AudioSymmetricRtpSession.cpp b/sflphone-common/src/audio/audiortp/AudioSymmetricRtpSession.cpp index 0f9905f0d2cf062f2e75c9f83265cb4d89857d8d..6169df5926a2069fae5005084ced1a2429c95947 100644 --- a/sflphone-common/src/audio/audiortp/AudioSymmetricRtpSession.cpp +++ b/sflphone-common/src/audio/audiortp/AudioSymmetricRtpSession.cpp @@ -62,9 +62,6 @@ AudioSymmetricRtpSession::~AudioSymmetricRtpSession() void AudioSymmetricRtpSession::final() { delete _rtpThread; - - // See: http://www.parashift.com/c++-faq-lite/freestore-mgmt.html#faq-16.15 - delete this; } AudioSymmetricRtpSession::AudioRtpThread::AudioRtpThread (AudioSymmetricRtpSession *session) : running (true), rtpSession (session) @@ -74,7 +71,6 @@ AudioSymmetricRtpSession::AudioRtpThread::AudioRtpThread (AudioSymmetricRtpSessi AudioSymmetricRtpSession::AudioRtpThread::~AudioRtpThread() { - ost::Thread::terminate(); _debug ("AudioSymmetricRtpSession: Delete rtp thread"); } diff --git a/sflphone-common/src/audio/audiortp/AudioSymmetricRtpSession.h b/sflphone-common/src/audio/audiortp/AudioSymmetricRtpSession.h index f9626767134bbb1ad322f004be7ce1cb5d93122e..7a5b4953697509af0abca5911546ca455818f022 100644 --- a/sflphone-common/src/audio/audiortp/AudioSymmetricRtpSession.h +++ b/sflphone-common/src/audio/audiortp/AudioSymmetricRtpSession.h @@ -55,7 +55,6 @@ using std::ptrdiff_t; namespace sfl { -// class AudioSymmetricRtpSession : protected ost::Thread, public ost::TimerPort, public AudioRtpRecordHandler, public ost::TRTPSessionBase<ost::DualRTPUDPIPv4Channel,ost::DualRTPUDPIPv4Channel,ost::AVPQueue> class AudioSymmetricRtpSession : public ost::TimerPort, public ost::SymmetricRTPSession, public AudioRtpSession { public: @@ -69,9 +68,6 @@ class AudioSymmetricRtpSession : public ost::TimerPort, public ost::SymmetricRTP virtual void final (); - // Thread associated method - // virtual void run (); - virtual bool onRTPPacketRecv (ost::IncomingRTPPkt& pkt) { return AudioRtpSession::onRTPPacketRecv(pkt); } int startSymmetricRtpThread (void) {