ensure that when a Session emits Port::PortDrop, transport master ports are left in place

This commit is contained in:
Paul Davis 2020-04-24 11:50:43 -06:00
parent afcc95167e
commit e6b12bd0aa
2 changed files with 12 additions and 1 deletions

View File

@ -185,6 +185,7 @@ private:
void port_connected_or_disconnected (boost::weak_ptr<Port>, boost::weak_ptr<Port>, bool);
void signal_drop ();
void session_global_drop ();
void drop ();
PBD::ScopedConnectionList drop_connection;
PBD::ScopedConnection engine_connection;

View File

@ -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));
}
@ -127,6 +127,16 @@ Port::set_pretty_name(const std::string& n)
return false;
}
void
Port::session_global_drop()
{
if (_flags & TransportMasterPort) {
return;
}
drop ();
}
void
Port::signal_drop ()
{