From f2ba861f050ec87a046ed7c078ab08a5c75c351e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 27 Oct 2011 21:01:46 +0000 Subject: [PATCH] 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 --- gtk2_ardour/audio_streamview.cc | 4 ++++ 1 file changed, 4 insertions(+) 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 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 ();