diff options
Diffstat (limited to 'libs/ardour/port.cc')
-rw-r--r-- | libs/ardour/port.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index d22e23c2c7..c4fb6b7862 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -83,7 +83,7 @@ Port::Port (std::string const & n, DataType t, PortFlags f) } DEBUG_TRACE (DEBUG::Ports, string_compose ("registed port %1 handle %2\n", name(), _port_handle)); - PortDrop.connect_same_thread (drop_connection, boost::bind (&Port::drop, this)); + PortDrop.connect_same_thread (drop_connection, boost::bind (&Port::session_global_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)); } @@ -128,6 +128,16 @@ Port::set_pretty_name(const std::string& n) } void +Port::session_global_drop() +{ + if (_flags & TransportMasterPort) { + return; + } + + drop (); +} + +void Port::signal_drop () { engine_connection.disconnect (); |