From f8936ebcb1b8c95bfa5969ac92cfbde87023778c Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 24 Apr 2016 00:24:43 +0200 Subject: Disconnect Signals before dropping ports significantly speeds up session close --- libs/ardour/port.cc | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'libs/ardour/port.cc') 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, boost::shared_ptr > Port::PostDisconnect; PBD::Signal0 Port::PortDrop; +PBD::Signal0 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)); } @@ -118,6 +120,12 @@ Port::set_pretty_name(const std::string& n) return false; } +void +Port::signal_drop () +{ + engine_connection.disconnect (); +} + void Port::drop () { -- cgit v1.2.3