diff options
author | Robin Gareus <robin@gareus.org> | 2016-04-24 00:24:43 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-04-24 00:24:43 +0200 |
commit | f8936ebcb1b8c95bfa5969ac92cfbde87023778c (patch) | |
tree | 83830fe4728decfaf02940d1a708a1789f414318 /libs/ardour/port.cc | |
parent | 2a7a64a8738413df27e494e67c31695a429f6edc (diff) |
Disconnect Signals before dropping ports
significantly speeds up session close
Diffstat (limited to 'libs/ardour/port.cc')
-rw-r--r-- | libs/ardour/port.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index dcb3e2ff4a..7888167a70 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -38,6 +38,7 @@ using namespace PBD; PBD::Signal2<void,boost::shared_ptr<Port>, boost::shared_ptr<Port> > Port::PostDisconnect; PBD::Signal0<void> Port::PortDrop; +PBD::Signal0<void> Port::PortSignalDrop; bool Port::_connecting_blocked = false; pframes_t Port::_global_port_buffer_offset = 0; @@ -75,6 +76,7 @@ Port::Port (std::string const & n, DataType t, PortFlags f) } PortDrop.connect_same_thread (drop_connection, boost::bind (&Port::drop, this)); + PortSignalDrop.connect_same_thread (drop_connection, boost::bind (&Port::signal_drop, this)); port_manager->PortConnectedOrDisconnected.connect_same_thread (engine_connection, boost::bind (&Port::port_connected_or_disconnected, this, _1, _3, _5)); } @@ -119,6 +121,12 @@ Port::set_pretty_name(const std::string& n) } void +Port::signal_drop () +{ + engine_connection.disconnect (); +} + +void Port::drop () { if (_port_handle) { |