diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-10-27 21:01:46 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-10-27 21:01:46 +0000 |
commit | f2ba861f050ec87a046ed7c078ab08a5c75c351e (patch) | |
tree | a438146678cd4e2bd4929daea325416c94ebe6b7 | |
parent | b02ebd72a56c180073d93c332263550543b85eeb (diff) |
stop leakage of Crossfades caused by CrossfadeView's being left dangling when AudioStreamView is deleted
git-svn-id: svn://localhost/ardour2/branches/3.0@10318 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/audio_streamview.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index 1dda45fdce..51be8f44b8 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -70,6 +70,9 @@ AudioStreamView::AudioStreamView (AudioTimeAxisView& tv) AudioStreamView::~AudioStreamView () { + for (CrossfadeViewList::iterator xi = crossfade_views.begin(); xi != crossfade_views.end(); ++xi) { + delete xi->second; + } } int @@ -334,6 +337,7 @@ AudioStreamView::add_crossfade (boost::weak_ptr<Crossfade> wc) *lview, *rview); cv->set_valid (true); crossfade->Invalidated.connect (*this, invalidator (*this), ui_bind (&AudioStreamView::remove_crossfade, this, _1), gui_context()); + crossfade->DropReferences.connect (*this, invalidator (*this), ui_bind (&AudioStreamView::remove_crossfade, this, crossfade), gui_context()); crossfade_views[cv->crossfade] = cv; if (!crossfades_visible) { cv->hide (); |