summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_sources.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-12-25 18:00:57 +0100
committerRobin Gareus <robin@gareus.org>2019-12-25 18:00:57 +0100
commitb228dce1c1a8f006df6b5c30ede5a02460f2e766 (patch)
tree16f9d3664508fc2d056a7f4f47a7b696c9620915 /gtk2_ardour/editor_sources.cc
parentab58c894d391086dfdb1762408cc6c1fa9b2383e (diff)
Use weak-ptr for source added/removed signals (2/2)
Diffstat (limited to 'gtk2_ardour/editor_sources.cc')
-rw-r--r--gtk2_ardour/editor_sources.cc11
1 files changed, 10 insertions, 1 deletions
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();
@@ -297,6 +297,15 @@ EditorSources::set_session (ARDOUR::Session* s)
}
void
+EditorSources::remove_weak_source (boost::weak_ptr<ARDOUR::Source> src)
+{
+ boost::shared_ptr<ARDOUR::Source> source = src.lock();
+ if (source) {
+ remove_source (source);
+ }
+}
+
+void
EditorSources::remove_source (boost::shared_ptr<ARDOUR::Source> source)
{
TreeModel::iterator i;