Make TimeAxisView::remove_child virtual so that RouteTimeAxis can override it to also remove the same child from its _automation_tracks list. Prevents a shared_ptr to an out-of-date AutomationTimeAxisView hanging around; fixes #4554.
git-svn-id: svn://localhost/ardour2/branches/3.0@10985 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
748b24009b
commit
4dd7b9b34c
@ -2484,3 +2484,19 @@ RouteTimeAxisView::state_id() const
|
|||||||
return string_compose ("rtav %1", _route->id().to_s());
|
return string_compose ("rtav %1", _route->id().to_s());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
RouteTimeAxisView::remove_child (boost::shared_ptr<TimeAxisView> c)
|
||||||
|
{
|
||||||
|
TimeAxisView::remove_child (c);
|
||||||
|
|
||||||
|
boost::shared_ptr<AutomationTimeAxisView> a = boost::dynamic_pointer_cast<AutomationTimeAxisView> (c);
|
||||||
|
if (a) {
|
||||||
|
for (AutomationTracks::iterator i = _automation_tracks.begin(); i != _automation_tracks.end(); ++i) {
|
||||||
|
if (i->second == a) {
|
||||||
|
_automation_tracks.erase (i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -306,6 +306,10 @@ protected:
|
|||||||
UnderlayMirrorList _underlay_mirrors;
|
UnderlayMirrorList _underlay_mirrors;
|
||||||
|
|
||||||
bool _ignore_track_mode_change; ///< true to ignore track mode change signals
|
bool _ignore_track_mode_change; ///< true to ignore track mode change signals
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
void remove_child (boost::shared_ptr<TimeAxisView>);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __ardour_route_time_axis_h__ */
|
#endif /* __ardour_route_time_axis_h__ */
|
||||||
|
@ -267,7 +267,7 @@ class TimeAxisView : public virtual AxisView
|
|||||||
Children children;
|
Children children;
|
||||||
bool is_child (TimeAxisView*);
|
bool is_child (TimeAxisView*);
|
||||||
|
|
||||||
void remove_child (boost::shared_ptr<TimeAxisView>);
|
virtual void remove_child (boost::shared_ptr<TimeAxisView>);
|
||||||
void add_child (boost::shared_ptr<TimeAxisView>);
|
void add_child (boost::shared_ptr<TimeAxisView>);
|
||||||
|
|
||||||
/* selection display */
|
/* selection display */
|
||||||
|
Loading…
Reference in New Issue
Block a user