diff --git a/gtk2_ardour/editor_sources.cc b/gtk2_ardour/editor_sources.cc index fdd897b41c..676e3eb0e6 100644 --- a/gtk2_ardour/editor_sources.cc +++ b/gtk2_ardour/editor_sources.cc @@ -266,10 +266,12 @@ EditorSources::set_session (ARDOUR::Session* s) if (s) { /* Currently, none of the displayed properties are mutable, so there is no reason to register for changes - * ARDOUR::Region::RegionPropertyChanged.connect (region_property_connection, MISSING_INVALIDATOR, boost::bind (&EditorSources::source_changed, this, _1, _2), gui_context()); + * ARDOUR::Region::RegionPropertyChanged.connect (source_property_connection, MISSING_INVALIDATOR, boost::bind (&EditorSources::source_changed, this, _1, _2), gui_context()); */ - ARDOUR::RegionFactory::CheckNewRegion.connect (check_new_region_connection, MISSING_INVALIDATOR, boost::bind (&EditorSources::add_source, this, _1), gui_context()); + ARDOUR::RegionFactory::CheckNewRegion.connect (add_source_connection, MISSING_INVALIDATOR, boost::bind (&EditorSources::add_source, this, _1), gui_context()); + + s->SourceRemoved.connect (remove_source_connection, MISSING_INVALIDATOR, boost::bind (&EditorSources::remove_source, this, _1), gui_context()); redisplay(); @@ -279,13 +281,13 @@ EditorSources::set_session (ARDOUR::Session* s) } void -EditorSources::remove_source (boost::shared_ptr region) +EditorSources::remove_source (boost::shared_ptr source) { TreeModel::iterator i; TreeModel::Children rows = _model->children(); for (i = rows.begin(); i != rows.end(); ++i) { boost::shared_ptr rr = (*i)[_columns.region]; - if (region == rr) { + if (rr->source() == source) { _model->erase(i); break; } diff --git a/gtk2_ardour/editor_sources.h b/gtk2_ardour/editor_sources.h index 5bcc9f5c2d..e12cac8065 100644 --- a/gtk2_ardour/editor_sources.h +++ b/gtk2_ardour/editor_sources.h @@ -116,7 +116,7 @@ private: void format_position (ARDOUR::samplepos_t pos, char* buf, size_t bufsize, bool onoff = true); void add_source (boost::shared_ptr); - void remove_source (boost::shared_ptr); + void remove_source (boost::shared_ptr); void clock_format_changed (); @@ -143,8 +143,9 @@ private: Glib::RefPtr _model; - PBD::ScopedConnection region_property_connection; - PBD::ScopedConnection check_new_region_connection; + PBD::ScopedConnection source_property_connection; + PBD::ScopedConnection add_source_connection; + PBD::ScopedConnection remove_source_connection; PBD::ScopedConnection editor_freeze_connection; PBD::ScopedConnection editor_thaw_connection;