mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-09 00:04:56 +01:00
keep port-matrix in sync when deleting ports. and fix segfault on session close with io-matrix visible
This commit is contained in:
parent
5143a42b31
commit
23f738c699
1 changed files with 7 additions and 1 deletions
|
|
@ -152,6 +152,7 @@ PortMatrix::init ()
|
||||||
|
|
||||||
/* and also bundles */
|
/* and also bundles */
|
||||||
_session->BundleAdded.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
|
_session->BundleAdded.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
|
||||||
|
_session->BundleRemoved.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
|
||||||
|
|
||||||
/* and also ports */
|
/* and also ports */
|
||||||
_session->engine().PortRegisteredOrUnregistered.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
|
_session->engine().PortRegisteredOrUnregistered.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
|
||||||
|
|
@ -180,6 +181,7 @@ PortMatrix::reconnect_to_routes ()
|
||||||
boost::shared_ptr<RouteList> routes = _session->get_routes ();
|
boost::shared_ptr<RouteList> routes = _session->get_routes ();
|
||||||
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
|
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
|
||||||
(*i)->processors_changed.connect (_route_connections, invalidator (*this), boost::bind (&PortMatrix::route_processors_changed, this, _1), gui_context());
|
(*i)->processors_changed.connect (_route_connections, invalidator (*this), boost::bind (&PortMatrix::route_processors_changed, this, _1), gui_context());
|
||||||
|
(*i)->DropReferences.connect (_route_connections, invalidator (*this), boost::bind (&PortMatrix::routes_changed, this), gui_context());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -198,6 +200,7 @@ PortMatrix::route_processors_changed (RouteProcessorChange c)
|
||||||
void
|
void
|
||||||
PortMatrix::routes_changed ()
|
PortMatrix::routes_changed ()
|
||||||
{
|
{
|
||||||
|
if (!_session) return;
|
||||||
reconnect_to_routes ();
|
reconnect_to_routes ();
|
||||||
setup_global_ports ();
|
setup_global_ports ();
|
||||||
}
|
}
|
||||||
|
|
@ -206,7 +209,10 @@ PortMatrix::routes_changed ()
|
||||||
void
|
void
|
||||||
PortMatrix::setup ()
|
PortMatrix::setup ()
|
||||||
{
|
{
|
||||||
if (!_session) return; // session went away
|
if (!_session) {
|
||||||
|
_route_connections.drop_connections ();
|
||||||
|
return; // session went away
|
||||||
|
}
|
||||||
|
|
||||||
/* this needs to be done first, as the visible_ports() method uses the
|
/* this needs to be done first, as the visible_ports() method uses the
|
||||||
notebook state to decide which ports are being shown */
|
notebook state to decide which ports are being shown */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue