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);