diff options
author | Robin Gareus <robin@gareus.org> | 2019-12-25 18:00:57 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-12-25 18:00:57 +0100 |
commit | b228dce1c1a8f006df6b5c30ede5a02460f2e766 (patch) | |
tree | 16f9d3664508fc2d056a7f4f47a7b696c9620915 /gtk2_ardour/editor_sources.cc | |
parent | ab58c894d391086dfdb1762408cc6c1fa9b2383e (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.cc | 11 |
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; |