From c5db9a21b990b55e1b515a65a99bdc504d0af89c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 28 Nov 2009 00:48:35 +0000 Subject: another fix for binding shared_ptr's into signals git-svn-id: svn://localhost/ardour2/branches/3.0@6194 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor_regions.cc | 11 +++++++++++ gtk2_ardour/editor_regions.h | 1 + gtk2_ardour/streamview.cc | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) 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 @@ -156,6 +156,16 @@ EditorRegions::handle_new_regions (vector >& v) add_regions (v); } +void +EditorRegions::region_hidden_weak (boost::weak_ptr wr) +{ + boost::shared_ptr r (wr.lock()); + + if (r) { + region_hidden (r); + } +} + void EditorRegions::region_hidden (boost::shared_ptr r) { @@ -163,6 +173,7 @@ EditorRegions::region_hidden (boost::shared_ptr r) redisplay (); } + void EditorRegions::add_regions (vector >& 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); void add_regions (std::vector > & ); void region_hidden (boost::shared_ptr); + void region_hidden_weak (boost::weak_ptr); void populate_row (boost::shared_ptr, Gtk::TreeModel::Row const &); void update_row (boost::shared_ptr); bool update_subrows (boost::shared_ptr, 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 r) void StreamView::add_region_view (boost::shared_ptr 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(r))); add_region_view_internal (r, true); -- cgit v1.2.3