Move Diskstream ownership to Track, so that Session no longer holds lists of Diskstre...
[ardour.git] / gtk2_ardour / editor.cc
index a2ba7891c8810f0addbf370ab89159628d3405a9..630499a9c4645b0d6f5bb15583612e4e11179550 100644 (file)
@@ -331,7 +331,6 @@ Editor::Editor ()
 
        current_interthread_info = 0;
        _show_measures = true;
-       _show_waveforms_recording = true;
        show_gain_after_trim = false;
        verbose_cursor_on = true;
        last_item_entered = 0;
@@ -344,7 +343,7 @@ Editor::Editor ()
        editor_ruler_menu = 0;
        no_ruler_shown_update = false;
        marker_menu = 0;
-       start_end_marker_menu = 0;
+       session_range_marker_menu = 0;
        range_marker_menu = 0;
        marker_menu_item = 0;
        tm_marker_menu = 0;
@@ -1105,7 +1104,7 @@ Editor::set_session (Session *t)
        _session->locations()->removed.connect (_session_connections, invalidator (*this), ui_bind (&Editor::location_gone, this, _1), gui_context());
        _session->locations()->changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::refresh_location_display, this), gui_context());
        _session->locations()->StateChanged.connect (_session_connections, invalidator (*this), ui_bind (&Editor::refresh_location_display_s, this, _1), gui_context());
-       _session->locations()->end_location()->changed.connect (_session_connections, invalidator (*this), ui_bind (&Editor::end_location_changed, this, _1), gui_context());
+       _session->locations()->session_range_location()->changed.connect (_session_connections, invalidator (*this), ui_bind (&Editor::session_range_location_changed, this, _1), gui_context());
        _session->history().Changed.connect (_session_connections, invalidator (*this), boost::bind (&Editor::history_changed, this), gui_context());
 
        if (Profile->get_sae()) {
@@ -1359,7 +1358,7 @@ Editor::popup_track_context_menu (int button, int32_t time, ItemType item_type,
                break;
 
        case StreamItem:
-               if (clicked_routeview->get_diskstream()) {
+               if (clicked_routeview->track()) {
                        build_menu_function = &Editor::build_track_context_menu;
                } else {
                        build_menu_function = &Editor::build_track_bus_context_menu;
@@ -1481,11 +1480,11 @@ Editor::build_track_region_context_menu (nframes64_t frame)
        RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (clicked_axisview);
 
        if (rtv) {
-               boost::shared_ptr<Diskstream> ds;
+               boost::shared_ptr<Track> tr;
                boost::shared_ptr<Playlist> pl;
 
-               if ((ds = rtv->get_diskstream()) && ((pl = ds->playlist()))) {
-                       Playlist::RegionList* regions = pl->regions_at ((nframes64_t) floor ( (double)frame * ds->speed()));
+               if ((tr = rtv->track()) && ((pl = tr->playlist()))) {
+                       Playlist::RegionList* regions = pl->regions_at ((nframes64_t) floor ( (double)frame * tr->speed()));
 
                        if (selection->regions.size() > 1) {
                                // there's already a multiple selection: just add a
@@ -1494,7 +1493,7 @@ Editor::build_track_region_context_menu (nframes64_t frame)
                                boost::shared_ptr<Region> dummy_region; // = NULL
                                add_region_context_items (rtv->view(), dummy_region, edit_items);
                        } else {
-                               for (Playlist::RegionList::iterator i = regions->begin(); i != regions->end(); ++i) {
+                               for (Playlist::RegionList::reverse_iterator i = regions->rbegin(); i != regions->rend(); ++i) {
                                        add_region_context_items (rtv->view(), (*i), edit_items);
                                }
                        }
@@ -1518,11 +1517,11 @@ Editor::build_track_crossfade_context_menu (nframes64_t frame)
        AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*> (clicked_axisview);
 
        if (atv) {
-               boost::shared_ptr<Diskstream> ds;
+               boost::shared_ptr<Track> tr;
                boost::shared_ptr<Playlist> pl;
                boost::shared_ptr<AudioPlaylist> apl;
 
-               if ((ds = atv->get_diskstream()) && ((pl = ds->playlist()) != 0) && ((apl = boost::dynamic_pointer_cast<AudioPlaylist> (pl)) != 0)) {
+               if ((tr = atv->track()) && ((pl = tr->playlist()) != 0) && ((apl = boost::dynamic_pointer_cast<AudioPlaylist> (pl)) != 0)) {
 
                        Playlist::RegionList* regions = pl->regions_at (frame);
                        AudioPlaylist::Crossfades xfades;
@@ -1542,7 +1541,7 @@ Editor::build_track_crossfade_context_menu (nframes64_t frame)
                                boost::shared_ptr<Region> dummy_region; // = NULL
                                add_region_context_items (atv->audio_view(), dummy_region, edit_items);
                        } else {
-                               for (Playlist::RegionList::iterator i = regions->begin(); i != regions->end(); ++i) {
+                               for (Playlist::RegionList::reverse_iterator i = regions->rbegin(); i != regions->rend(); ++i) {
                                        add_region_context_items (atv->audio_view(), (*i), edit_items);
                                }
                        }
@@ -2332,18 +2331,6 @@ Editor::set_state (const XMLNode& node, int /*version*/)
                set_edit_point_preference ((EditPoint) string_2_enum (prop->value(), _edit_point), true);
        }
 
-       if ((prop = node.property ("show-waveforms-recording"))) {
-               bool yn = string_is_affirmative (prop->value());
-               _show_waveforms_recording = !yn;
-               RefPtr<Action> act = ActionManager::get_action (X_("Editor"), X_("ToggleWaveformsWhileRecording"));
-               if (act) {
-                       RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic(act);
-                       /* do it twice to force the change */
-                       tact->set_active (!yn);
-                       tact->set_active (yn);
-               }
-       }
-
        if ((prop = node.property ("show-measures"))) {
                bool yn = string_is_affirmative (prop->value());
                _show_measures = !yn;
@@ -2490,7 +2477,6 @@ Editor::get_state ()
        snprintf (buf, sizeof (buf), "%f", vertical_adjustment.get_value ());
        node->add_property ("y-origin", buf);
 
-       node->add_property ("show-waveforms-recording", _show_waveforms_recording ? "yes" : "no");
        node->add_property ("show-measures", _show_measures ? "yes" : "no");
        node->add_property ("follow-playhead", _follow_playhead ? "yes" : "no");
         node->add_property ("stationary-playhead", _stationary_playhead ? "yes" : "no");
@@ -3886,11 +3872,11 @@ Editor::get_nudge_distance (nframes64_t pos, nframes64_t& next)
 }
 
 void
-Editor::end_location_changed (Location* location)
+Editor::session_range_location_changed (Location* location)
 {
-       ENSURE_GUI_THREAD (*this, &Editor::end_location_changed, location)
+       ENSURE_GUI_THREAD (*this, &Editor::session_range_location_changed, location)
        //reset_scrolling_region ();
-       nframes64_t session_span = location->start() + (nframes64_t) floorf (current_page_frames() * 0.10f);
+       nframes64_t const session_span = location->end() + (nframes64_t) floorf (current_page_frames() * 0.10f);
        horizontal_adjustment.set_upper (session_span / frames_per_unit);
 }
 
@@ -4551,13 +4537,13 @@ Editor::get_regions_at (RegionSelection& rs, nframes64_t where, const TrackViewL
        for (TrackViewList::const_iterator t = tracks->begin(); t != tracks->end(); ++t) {
                RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(*t);
                if (rtv) {
-                       boost::shared_ptr<Diskstream> ds;
+                       boost::shared_ptr<Track> tr;
                        boost::shared_ptr<Playlist> pl;
 
-                       if ((ds = rtv->get_diskstream()) && ((pl = ds->playlist()))) {
+                       if ((tr = rtv->track()) && ((pl = tr->playlist()))) {
 
                                Playlist::RegionList* regions = pl->regions_at (
-                                               (nframes64_t) floor ( (double)where * ds->speed()));
+                                               (nframes64_t) floor ( (double)where * tr->speed()));
 
                                for (Playlist::RegionList::iterator i = regions->begin(); i != regions->end(); ++i) {
                                        RegionView* rv = rtv->view()->find_view (*i);
@@ -4586,13 +4572,13 @@ Editor::get_regions_after (RegionSelection& rs, nframes64_t where, const TrackVi
        for (TrackViewList::const_iterator t = tracks->begin(); t != tracks->end(); ++t) {
                RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(*t);
                if (rtv) {
-                       boost::shared_ptr<Diskstream> ds;
+                       boost::shared_ptr<Track> tr;
                        boost::shared_ptr<Playlist> pl;
 
-                       if ((ds = rtv->get_diskstream()) && ((pl = ds->playlist()))) {
+                       if ((tr = rtv->track()) && ((pl = tr->playlist()))) {
 
                                Playlist::RegionList* regions = pl->regions_touched (
-                                               (nframes64_t) floor ( (double)where * ds->speed()), max_frames);
+                                               (nframes64_t) floor ( (double)where * tr->speed()), max_frames);
 
                                for (Playlist::RegionList::iterator i = regions->begin(); i != regions->end(); ++i) {
 
@@ -4664,14 +4650,14 @@ Editor::get_regions_corresponding_to (boost::shared_ptr<Region> region, vector<R
                        boost::shared_ptr<Playlist> pl;
                        vector<boost::shared_ptr<Region> > results;
                        RegionView* marv;
-                       boost::shared_ptr<Diskstream> ds;
+                       boost::shared_ptr<Track> tr;
 
-                       if ((ds = tatv->get_diskstream()) == 0) {
+                       if ((tr = tatv->track()) == 0) {
                                /* bus */
                                continue;
                        }
 
-                       if ((pl = (ds->playlist())) != 0) {
+                       if ((pl = (tr->playlist())) != 0) {
                                pl->get_region_list_equivalent_regions (region, results);
                        }