From 33349b260d0705c0634373d94fb39eedb7f39c07 Mon Sep 17 00:00:00 2001 From: Valeriy Kamyshniy Date: Tue, 2 Dec 2014 15:51:51 +0200 Subject: [PATCH] =?UTF-8?q?[Summary]=20Fixing=20bug:=20disconnect=5Fall=20?= =?UTF-8?q?did=20not=20wipe=20input=20port=E2=80=99s=20buffer.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/backends/wavesaudio/waves_dataport.cc | 15 +++++++++++---- libs/backends/wavesaudio/waves_dataport.h | 1 + 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libs/backends/wavesaudio/waves_dataport.cc b/libs/backends/wavesaudio/waves_dataport.cc index d1dacc90eb..3bb76c4786 100644 --- a/libs/backends/wavesaudio/waves_dataport.cc +++ b/libs/backends/wavesaudio/waves_dataport.cc @@ -35,7 +35,7 @@ WavesDataPort::WavesDataPort (const std::string& inport_name, PortFlags inflags) WavesDataPort::~WavesDataPort () { - disconnect_all (); + _disconnect_all (); } @@ -115,14 +115,22 @@ void WavesDataPort::_disconnect (WavesDataPort *port, bool api_call) port->_disconnect (this, false); } - if (is_input() && _connections.empty()) - { + if (is_input() && _connections.empty()) { _wipe_buffer(); } } void WavesDataPort::disconnect_all () +{ + _disconnect_all (); + + if (is_input()) { + _wipe_buffer(); + } +} + +void WavesDataPort::_disconnect_all () { while (!_connections.empty ()) { _connections.back ()->_disconnect (this, false); @@ -130,7 +138,6 @@ void WavesDataPort::disconnect_all () } } - bool WavesDataPort::is_physically_connected () const { for (std::vector::const_iterator it = _connections.begin (); it != _connections.end (); ++it) { diff --git a/libs/backends/wavesaudio/waves_dataport.h b/libs/backends/wavesaudio/waves_dataport.h index 1b2f26f3f1..a5b8243bbe 100644 --- a/libs/backends/wavesaudio/waves_dataport.h +++ b/libs/backends/wavesaudio/waves_dataport.h @@ -106,6 +106,7 @@ private: std::vector _connections; void _connect (WavesDataPort* port, bool api_call); + void _disconnect_all (); void _disconnect (WavesDataPort* port, bool api_call); };