Use weak_ptr for IOs in the bundle list to avoid holding onto them when a route is removed. Fixes #3395.
git-svn-id: svn://localhost/ardour2/branches/3.0@7702 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
2a69334d68
commit
9afbb649b6
|
@ -209,7 +209,8 @@ PortGroup::io_from_bundle (boost::shared_ptr<ARDOUR::Bundle> b) const
|
|||
return boost::shared_ptr<IO> ();
|
||||
}
|
||||
|
||||
return (*i)->io;
|
||||
boost::shared_ptr<IO> io ((*i)->io.lock ());
|
||||
return io;
|
||||
}
|
||||
|
||||
/** Remove bundles whose channels are already represented by other, larger bundles */
|
||||
|
@ -306,6 +307,7 @@ struct RouteIOs {
|
|||
}
|
||||
|
||||
boost::shared_ptr<Route> route;
|
||||
/* it's ok to use a shared_ptr here as RouteIOs structs are only used during ::gather () */
|
||||
std::list<boost::shared_ptr<IO> > ios;
|
||||
};
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ public:
|
|||
boost::shared_ptr<ARDOUR::Bundle> bundle;
|
||||
/** IO whose ports are in the bundle, or 0. This is so that we can do things like adding
|
||||
ports to the IO from matrix editor menus. */
|
||||
boost::shared_ptr<ARDOUR::IO> io;
|
||||
boost::weak_ptr<ARDOUR::IO> io;
|
||||
Gdk::Color colour;
|
||||
bool has_colour;
|
||||
PBD::ScopedConnection changed_connection;
|
||||
|
|
Loading…
Reference in New Issue