13
0

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 port_connected_or_disconnected (boost::weak_ptr<Port>, boost::weak_ptr<Port>, bool);
void signal_drop (); void signal_drop ();
void session_global_drop ();
void drop (); void drop ();
PBD::ScopedConnectionList drop_connection; PBD::ScopedConnectionList drop_connection;
PBD::ScopedConnection engine_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)); 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)); 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)); 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; return false;
} }
void
Port::session_global_drop()
{
if (_flags & TransportMasterPort) {
return;
}
drop ();
}
void void
Port::signal_drop () Port::signal_drop ()
{ {