From b228dce1c1a8f006df6b5c30ede5a02460f2e766 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 25 Dec 2019 18:00:57 +0100 Subject: [PATCH] Use weak-ptr for source added/removed signals (2/2) --- gtk2_ardour/editor_sources.cc | 11 ++++++++++- gtk2_ardour/editor_sources.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) 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 ();