diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-11-28 00:48:35 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-11-28 00:48:35 +0000 |
commit | c5db9a21b990b55e1b515a65a99bdc504d0af89c (patch) | |
tree | 8f1af4b8b2d371b3cdd8e39b2bb57624c6f8243b /gtk2_ardour | |
parent | 8724caeee874bfa15ca81b0d515692683ffc5461 (diff) |
another fix for binding shared_ptr's into signals
git-svn-id: svn://localhost/ardour2/branches/3.0@6194 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor_regions.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/editor_regions.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/streamview.cc | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc index 0b3d01b7d8..697c46bba5 100644 --- a/gtk2_ardour/editor_regions.cc +++ b/gtk2_ardour/editor_regions.cc @@ -157,12 +157,23 @@ EditorRegions::handle_new_regions (vector<boost::weak_ptr<Region> >& v) } void +EditorRegions::region_hidden_weak (boost::weak_ptr<Region> wr) +{ + boost::shared_ptr<Region> r (wr.lock()); + + if (r) { + region_hidden (r); + } +} + +void EditorRegions::region_hidden (boost::shared_ptr<Region> r) { ENSURE_GUI_THREAD(bind (mem_fun(*this, &EditorRegions::region_hidden), r)); redisplay (); } + void EditorRegions::add_regions (vector<boost::weak_ptr<Region> >& regions) { diff --git a/gtk2_ardour/editor_regions.h b/gtk2_ardour/editor_regions.h index 5d0ba42425..cc031b141e 100644 --- a/gtk2_ardour/editor_regions.h +++ b/gtk2_ardour/editor_regions.h @@ -126,6 +126,7 @@ private: void add_region (boost::shared_ptr<ARDOUR::Region>); void add_regions (std::vector<boost::weak_ptr<ARDOUR::Region> > & ); void region_hidden (boost::shared_ptr<ARDOUR::Region>); + void region_hidden_weak (boost::weak_ptr<ARDOUR::Region>); void populate_row (boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::Row const &); void update_row (boost::shared_ptr<ARDOUR::Region>); bool update_subrows (boost::shared_ptr<ARDOUR::Region>, Gtk::TreeModel::Row const &, int); diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index d3bbeb3532..6e3d62291d 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -186,7 +186,7 @@ StreamView::add_region_view_weak (boost::weak_ptr<Region> r) void StreamView::add_region_view (boost::shared_ptr<Region> r) { - ENSURE_GUI_THREAD (bind (mem_fun (*this, &StreamView::add_region_view), r)); + ENSURE_GUI_THREAD (bind (mem_fun (*this, &StreamView::add_region_view_weak), boost::weak_ptr<Region>(r))); add_region_view_internal (r, true); |