diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index f48f4761cf..b3fed5113b 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -942,6 +942,7 @@ AudioEngine::drop_backend () Port::PortDrop (); /* EMIT SIGNAL */ TransportMasterManager& tmm (TransportMasterManager::instance()); tmm.engine_stopped (); + tmm.set_session (0); // unregister TMM ports /* Stopped is needed for Graph to explicitly terminate threads */ Stopped (); /* EMIT SIGNAL */ diff --git a/libs/ardour/transport_master.cc b/libs/ardour/transport_master.cc index e76fd5eb66..a9debe974e 100644 --- a/libs/ardour/transport_master.cc +++ b/libs/ardour/transport_master.cc @@ -74,7 +74,7 @@ TransportMaster::TransportMaster (SyncSource t, std::string const & name) , _sclock_synced (Properties::sclock_synced, false) , _collect (Properties::collect, true) , _connected (Properties::connected, false) - , port_node (X_("")) + , port_node (X_("Port")) { register_properties (); @@ -243,6 +243,9 @@ void TransportMaster::set_session (Session* s) { _session = s; + if (!_session) { + unregister_port (); + } } int @@ -325,7 +328,10 @@ TransportMaster::get_state () } } + port_node = *pnode; node->add_child_nocopy (*pnode); + } else if (port_node.children (). size() > 0) { + node->add_child_copy (port_node); } return *node;