summaryrefslogtreecommitdiff
path: root/libs/ardour/port.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-10-06 01:28:33 +0200
committerRobin Gareus <robin@gareus.org>2015-10-06 01:28:33 +0200
commit09bad018f4cc60b501919f5da0cfa106592a731f (patch)
treee7c07151a6de9357b2ef4e9d408920188efe411f /libs/ardour/port.cc
parent53c14f86c90a330a301b1b890f91574644047c75 (diff)
forward "disconnect all", partial fix for #6308
Diffstat (limited to 'libs/ardour/port.cc')
-rw-r--r--libs/ardour/port.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc
index d375550d9e..06169dd576 100644
--- a/libs/ardour/port.cc
+++ b/libs/ardour/port.cc
@@ -128,13 +128,21 @@ Port::disconnect_all ()
{
if (_port_handle) {
+ std::vector<std::string> connections;
+ get_connections (connections);
+
port_engine.disconnect_all (_port_handle);
_connections.clear ();
/* a cheaper, less hacky way to do boost::shared_from_this() ...
*/
boost::shared_ptr<Port> pself = port_manager->get_port_by_name (name());
- PostDisconnect (pself, boost::shared_ptr<Port>()); // emit signal
+ for (vector<string>::const_iterator c = connections.begin(); c != connections.end() && pself; ++c) {
+ boost::shared_ptr<Port> pother = AudioEngine::instance()->get_port_by_name (*c);
+ if (pother) {
+ PostDisconnect (pself, pother); // emit signal
+ }
+ }
}
return 0;