diff --git a/gtk2_ardour/editor_sources.cc b/gtk2_ardour/editor_sources.cc index 73818435f9..29043c478f 100644 --- a/gtk2_ardour/editor_sources.cc +++ b/gtk2_ardour/editor_sources.cc @@ -287,7 +287,7 @@ EditorSources::set_session (ARDOUR::Session* s) 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()); + s->SourceRemoved.connect (remove_source_connection, MISSING_INVALIDATOR, boost::bind (&EditorSources::remove_weak_source, this, _1), gui_context()); redisplay(); @@ -296,6 +296,15 @@ EditorSources::set_session (ARDOUR::Session* s) } } +void +EditorSources::remove_weak_source (boost::weak_ptr src) +{ + boost::shared_ptr source = src.lock(); + if (source) { + remove_source (source); + } +} + void EditorSources::remove_source (boost::shared_ptr source) { diff --git a/gtk2_ardour/editor_sources.h b/gtk2_ardour/editor_sources.h index 109ba82b3b..72550069e6 100644 --- a/gtk2_ardour/editor_sources.h +++ b/gtk2_ardour/editor_sources.h @@ -120,6 +120,7 @@ private: void add_source (boost::shared_ptr); void remove_source (boost::shared_ptr); + void remove_weak_source (boost::weak_ptr); void clock_format_changed ();