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 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 */
|
/** Remove bundles whose channels are already represented by other, larger bundles */
|
||||||
@ -306,6 +307,7 @@ struct RouteIOs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr<Route> route;
|
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;
|
std::list<boost::shared_ptr<IO> > ios;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ public:
|
|||||||
boost::shared_ptr<ARDOUR::Bundle> bundle;
|
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
|
/** 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. */
|
ports to the IO from matrix editor menus. */
|
||||||
boost::shared_ptr<ARDOUR::IO> io;
|
boost::weak_ptr<ARDOUR::IO> io;
|
||||||
Gdk::Color colour;
|
Gdk::Color colour;
|
||||||
bool has_colour;
|
bool has_colour;
|
||||||
PBD::ScopedConnection changed_connection;
|
PBD::ScopedConnection changed_connection;
|
||||||
|
Loading…
Reference in New Issue
Block a user