summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-04-24 19:41:13 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-04-24 19:41:13 +0000
commitcc4e4ffe40446a851ff14a0f9f5ad934bd70cc46 (patch)
treed86c9034879f5194e56774d57e2fee211ab8a8e1 /gtk2_ardour
parent4ebea3867e782fd34ef7f76a86e2665595c59020 (diff)
bind() call involving shared_ptr<Crossfade> fixed
git-svn-id: svn://localhost/ardour2/trunk@1741 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/audio_streamview.cc16
-rw-r--r--gtk2_ardour/audio_streamview.h1
2 files changed, 16 insertions, 1 deletions
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc
index 14036bc569..279130ad38 100644
--- a/gtk2_ardour/audio_streamview.cc
+++ b/gtk2_ardour/audio_streamview.cc
@@ -291,12 +291,26 @@ AudioStreamView::playlist_changed (boost::shared_ptr<Diskstream> ds)
}
void
+AudioStreamView::add_crossfade_weak (boost::weak_ptr<Crossfade> crossfade)
+{
+ boost::shared_ptr<Crossfade> sp (crossfade.lock());
+
+ if (!sp) {
+ return;
+ }
+
+ add_crossfade (sp);
+}
+
+void
AudioStreamView::add_crossfade (boost::shared_ptr<Crossfade> crossfade)
{
AudioRegionView* lview = 0;
AudioRegionView* rview = 0;
+
+ /* we do not allow shared_ptr<T> to be bound to slots */
- ENSURE_GUI_THREAD (bind (mem_fun (*this, &AudioStreamView::add_crossfade), crossfade));
+ ENSURE_GUI_THREAD (bind (mem_fun (*this, &AudioStreamView::add_crossfade_weak), boost::weak_ptr<Crossfade> (crossfade)));
/* first see if we already have a CrossfadeView for this Crossfade */
diff --git a/gtk2_ardour/audio_streamview.h b/gtk2_ardour/audio_streamview.h
index 893622116f..12d400bebd 100644
--- a/gtk2_ardour/audio_streamview.h
+++ b/gtk2_ardour/audio_streamview.h
@@ -94,6 +94,7 @@ class AudioStreamView : public StreamView
void playlist_changed (boost::shared_ptr<ARDOUR::Diskstream>);
void add_crossfade (boost::shared_ptr<ARDOUR::Crossfade>);
+ void add_crossfade_weak (boost::weak_ptr<ARDOUR::Crossfade>);
void remove_crossfade (boost::shared_ptr<ARDOUR::Crossfade>);
void color_handler (ColorID id, uint32_t val);