}
void
-StreamView::remove_region_view (boost::shared_ptr<Region> r)
+StreamView::remove_region_view (boost::weak_ptr<Region> weak_r)
{
- ENSURE_GUI_THREAD (bind (mem_fun (*this, &StreamView::remove_region_view), r));
+ ENSURE_GUI_THREAD (bind (mem_fun (*this, &StreamView::remove_region_view), weak_r));
+
+ boost::shared_ptr<Region> r (weak_r.lock());
+
+ if (!r) {
+ return;
+ }
for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
if (((*i)->region()) == r) {
}
}
-#if 0
-(unused)
-void
-StreamView::remove_rec_region (boost::shared_ptr<Region> r)
-{
- ENSURE_GUI_THREAD(bind (mem_fun (*this, &StreamView::remove_rec_region), r));
-
- if (!Gtkmm2ext::UI::instance()->caller_is_ui_thread()) {
- fatal << "region deleted from non-GUI thread!" << endmsg;
- /*NOTREACHED*/
- }
-
- for (list<boost::shared_ptr<Region> >::iterator i = rec_regions.begin(); i != rec_regions.end(); ++i) {
- if (*i == r) {
- rec_regions.erase (i);
- break;
- }
- }
-}
-#endif
-
void
StreamView::undisplay_diskstream ()
{
{
ENSURE_GUI_THREAD (mem_fun (*this, &StreamView::playlist_modified));
- for (RegionViewList::iterator i = region_views.begin(); i != region_views.end(); ++i) {
- region_layered (*i);
- }
+ redisplay_diskstream ();
}
void
/* catch changes */
- playlist_connections.push_back (ds->playlist()->RegionAdded.connect (mem_fun (*this, &StreamView::add_region_view)));
- playlist_connections.push_back (ds->playlist()->RegionRemoved.connect (mem_fun (*this, &StreamView::remove_region_view)));
- playlist_connections.push_back (ds->playlist()->StateChanged.connect (mem_fun (*this, &StreamView::playlist_state_changed)));
playlist_connections.push_back (ds->playlist()->Modified.connect (mem_fun (*this, &StreamView::playlist_modified)));
}
-void
-StreamView::playlist_state_changed (Change ignored)
-{
- ENSURE_GUI_THREAD (bind (mem_fun (*this, &StreamView::playlist_state_changed), ignored));
-
- redisplay_diskstream ();
-}
-
void
StreamView::diskstream_changed ()
{