fixes for crossfade views, crossfades and undo/redo. added default crossfade settings...
[ardour.git] / gtk2_ardour / streamview.cc
index 097e581cdfb86645c9eef73492a14ce5a5dde5b5..75fb003d775825c5e47524f50ec11aba6610ef9c 100644 (file)
@@ -164,9 +164,15 @@ StreamView::add_region_view (boost::shared_ptr<Region> r)
 }
 
 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) {
@@ -177,27 +183,6 @@ StreamView::remove_region_view (boost::shared_ptr<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 ()
 {
@@ -221,9 +206,7 @@ StreamView::playlist_modified ()
 {
        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
@@ -246,20 +229,9 @@ StreamView::playlist_changed (boost::shared_ptr<Diskstream> ds)
 
        /* 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 ()
 {