diff options
author | Robin Gareus <robin@gareus.org> | 2015-10-06 01:28:33 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-10-06 01:28:33 +0200 |
commit | 09bad018f4cc60b501919f5da0cfa106592a731f (patch) | |
tree | e7c07151a6de9357b2ef4e9d408920188efe411f /libs | |
parent | 53c14f86c90a330a301b1b890f91574644047c75 (diff) |
forward "disconnect all", partial fix for #6308
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/port.cc | 10 |
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; |