Fix a few missing drops of Route references.

git-svn-id: svn://localhost/ardour2/branches/3.0@9571 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2011-05-23 10:03:14 +00:00
parent 09d4ab251e
commit 32df620938
5 changed files with 21 additions and 1 deletions

View file

@ -245,12 +245,22 @@ AutomationTimeAxisView::AutomationTimeAxisView (
automation_state_changed ();
ColorsChanged.connect (sigc::mem_fun (*this, &AutomationTimeAxisView::color_handler));
_route->DropReferences.connect (
_route_connections, invalidator (*this), ui_bind (&AutomationTimeAxisView::route_going_away, this), gui_context ()
);
}
AutomationTimeAxisView::~AutomationTimeAxisView ()
{
}
void
AutomationTimeAxisView::route_going_away ()
{
_route.reset ();
}
void
AutomationTimeAxisView::auto_clicked ()
{
@ -492,7 +502,7 @@ AutomationTimeAxisView::set_height (uint32_t h)
}
if (changed) {
if (canvas_item_visible (_canvas_display)) {
if (canvas_item_visible (_canvas_display) && _route) {
/* only emit the signal if the height really changed and we were visible */
_route->gui_changed ("visible_tracks", (void *) 0); /* EMIT_SIGNAL */
}

View file

@ -168,6 +168,7 @@ class AutomationTimeAxisView : public TimeAxisView {
void cut_copy_clear_objects_one (AutomationLine&, PointSelection&, Editing::CutCopyOp);
bool paste_one (AutomationLine&, ARDOUR::framepos_t, float times, Selection&, size_t nth);
void reset_objects_one (AutomationLine&, PointSelection&);
void route_going_away ();
void set_automation_state (ARDOUR::AutoState);
bool ignore_state_request;
@ -178,6 +179,7 @@ class AutomationTimeAxisView : public TimeAxisView {
void interpolation_changed (ARDOUR::AutomationList::InterpolationStyle);
PBD::ScopedConnectionList _list_connections;
PBD::ScopedConnectionList _route_connections;
void update_extra_xml_shown (bool editor_shown);

View file

@ -527,6 +527,7 @@ ProcessorBox::route_going_away ()
{
/* don't keep updating display as processors are deleted */
no_processor_redisplay = true;
_route.reset ();
}
void

View file

@ -273,6 +273,11 @@ MackieControlProtocol::switch_banks (int initial)
DEBUG_TRACE (DEBUG::MackieControl, string_compose ("switch to %1, %2\n", _current_initial_bank, end_pos));
// clear out routes from our table in case any have been deleted
for (vector<boost::shared_ptr<Route> >::iterator i = route_table.begin(); i != route_table.end(); ++i) {
i->reset ();
}
// link routes to strips
uint32_t i = 0;
for (; it != end && it != sorted.end(); ++it, ++i)

View file

@ -63,6 +63,8 @@ void RouteSignal::connect()
// TODO this works when a currently-banked route is made inactive, but not
// when a route is activated which should be currently banked.
_route->active_changed.connect (connections, MISSING_INVALIDATOR, ui_bind (&MackieControlProtocol::notify_active_changed, &_mcp, this), midi_ui_context());
_route->DropReferences.connect (connections, MISSING_INVALIDATOR, ui_bind (&MackieControlProtocol::refresh_current_bank, &_mcp), midi_ui_context());
// TODO
// SelectedChanged