summaryrefslogtreecommitdiff
path: root/gtk2_ardour/audio_streamview.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-10-27 21:01:46 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-10-27 21:01:46 +0000
commitf2ba861f050ec87a046ed7c078ab08a5c75c351e (patch)
treea438146678cd4e2bd4929daea325416c94ebe6b7 /gtk2_ardour/audio_streamview.cc
parentb02ebd72a56c180073d93c332263550543b85eeb (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
Diffstat (limited to 'gtk2_ardour/audio_streamview.cc')
-rw-r--r--gtk2_ardour/audio_streamview.cc4
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 ();