diff options
author | Carl Hetherington <carl@carlh.net> | 2009-07-09 17:58:13 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2009-07-09 17:58:13 +0000 |
commit | 402cc384ced6cb152c8abe4294009fe0de0a6dea (patch) | |
tree | f01db6b412cb8e2d3c69fa123fd615c229ee47d3 /gtk2_ardour | |
parent | cc351b97a986fca48a6b3b631a292bf24efc5e41 (diff) |
Back out big shared_ptr change. Moving to a branch. Apologies all.
git-svn-id: svn://localhost/ardour2/branches/3.0@5343 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
71 files changed, 881 insertions, 1105 deletions
diff --git a/gtk2_ardour/analysis_window.cc b/gtk2_ardour/analysis_window.cc index d79e51e70e..ed2b90b34f 100644 --- a/gtk2_ardour/analysis_window.cc +++ b/gtk2_ardour/analysis_window.cc @@ -261,7 +261,7 @@ AnalysisWindow::analyze_data (Gtk::Button *button) if (!pl) continue; - boost::shared_ptr<RouteUI> rui = boost::dynamic_pointer_cast<RouteUI>(*i); + RouteUI *rui = dynamic_cast<RouteUI *>(*i); int n_inputs = rui->route()->n_inputs().n_audio(); // FFT is audio only // Busses don't have playlists, so we need to check that we actually are working with a playlist @@ -306,7 +306,7 @@ AnalysisWindow::analyze_data (Gtk::Button *button) } else if (source_selection_regions_rb.get_active()) { // cerr << "Analyzing selected regions on track " << *&rui->route().name() << endl; - TimeAxisViewPtr current_axis = (*i); + TimeAxisView *current_axis = (*i); for (RegionSelection::iterator j = ars.begin(); j != ars.end(); ++j) { // Check that the region is actually audio (so we can analyze it) @@ -315,7 +315,7 @@ AnalysisWindow::analyze_data (Gtk::Button *button) continue; // Check that the region really is selected on _this_ track/solo - if (arv->get_time_axis_view() != current_axis) + if ( &arv->get_time_axis_view() != current_axis) continue; // cerr << " - " << (*j)->region().name() << ": " << (*j)->region().length() << " samples starting at " << (*j)->region().position() << endl; diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 816bf57837..ca3c8b3ba1 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -65,7 +65,7 @@ using namespace ArdourCanvas; static const int32_t sync_mark_width = 9; -AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisViewPtr tv, boost::shared_ptr<AudioRegion> r, double spu, +AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &tv, boost::shared_ptr<AudioRegion> r, double spu, Gdk::Color const & basic_color) : RegionView (parent, tv, r, spu, basic_color) , sync_mark(0) @@ -82,7 +82,7 @@ AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView } -AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisViewPtr tv, boost::shared_ptr<AudioRegion> r, double spu, +AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &tv, boost::shared_ptr<AudioRegion> r, double spu, Gdk::Color const & basic_color, bool recording, TimeAxisViewItem::Visibility visibility) : RegionView (parent, tv, r, spu, basic_color, recording, visibility) , sync_mark(0) @@ -165,7 +165,7 @@ AudioRegionView::init (Gdk::Color const & basic_color, bool wfd) store_flags (); } - if (trackview->editor().new_regionviews_display_gain()) { + if (trackview.editor().new_regionviews_display_gain()) { _flags |= EnvelopeVisible; } @@ -200,14 +200,14 @@ AudioRegionView::init (Gdk::Color const & basic_color, bool wfd) setup_fade_handle_positions (); - if (!trackview->session().config.get_show_region_fades()) { + if (!trackview.session().config.get_show_region_fades()) { set_fade_visibility (false); } const string line_name = _region->name() + ":gain"; if (!Profile->get_sae()) { - gain_line = new AudioRegionGainLine (line_name, trackview->session(), *this, *group, + gain_line = new AudioRegionGainLine (line_name, trackview.session(), *this, *group, audio_region()->envelope()); } @@ -219,7 +219,7 @@ AudioRegionView::init (Gdk::Color const & basic_color, bool wfd) gain_line->reset (); - set_height (trackview->current_height()); + set_height (trackview.current_height()); region_muted (); region_sync_changed (); @@ -360,7 +360,7 @@ AudioRegionView::region_renamed () { Glib::ustring str = RegionView::make_name (); - if (audio_region()->speed_mismatch (trackview->session().frame_rate())) { + if (audio_region()->speed_mismatch (trackview.session().frame_rate())) { str = string ("*") + str; } @@ -415,7 +415,7 @@ AudioRegionView::reset_width_dependent_items (double pixel_width) fade_in_handle->hide(); fade_out_handle->hide(); } else { - if (trackview->session().config.get_show_region_fades()) { + if (trackview.session().config.get_show_region_fades()) { fade_in_handle->show(); fade_out_handle->show(); } @@ -575,7 +575,7 @@ AudioRegionView::reset_fade_in_shape_width (nframes_t width) return; } - if (trackview->session().config.get_show_region_fades()) { + if (trackview.session().config.get_show_region_fades()) { fade_in_shape->show(); } @@ -663,7 +663,7 @@ AudioRegionView::reset_fade_out_shape_width (nframes_t width) return; } - if (trackview->session().config.get_show_region_fades()) { + if (trackview.session().config.get_show_region_fades()) { fade_out_shape->show(); } @@ -768,10 +768,10 @@ void AudioRegionView::show_region_editor () { if (editor == 0) { - editor = new AudioRegionEditor (trackview->session(), audio_region(), *this); + editor = new AudioRegionEditor (trackview.session(), audio_region(), *this); // GTK2FIX : how to ensure float without realizing // editor->realize (); - // trackview->editor.ensure_float (*editor); + // trackview.editor.ensure_float (*editor); } editor->present (); @@ -836,13 +836,13 @@ void AudioRegionView::create_waves () { // cerr << "AudioRegionView::create_waves() called on " << this << endl;//DEBUG - RouteTimeAxisViewPtr atv = boost::dynamic_pointer_cast<RouteTimeAxisView> (trackview); // ick + RouteTimeAxisView& atv (*(dynamic_cast<RouteTimeAxisView*>(&trackview))); // ick - if (!atv->get_diskstream()) { + if (!atv.get_diskstream()) { return; } - ChanCount nchans = atv->get_diskstream()->n_channels(); + ChanCount nchans = atv.get_diskstream()->n_channels(); // cerr << "creating waves for " << _region->name() << " with wfd = " << wait_for_data // << " and channels = " << nchans.n_audio() << endl; @@ -884,16 +884,16 @@ void AudioRegionView::create_one_wave (uint32_t which, bool direct) { //cerr << "AudioRegionView::create_one_wave() called which: " << which << " this: " << this << endl;//DEBUG - RouteTimeAxisViewPtr atv = boost::dynamic_pointer_cast<RouteTimeAxisView> (trackview); // ick - uint32_t nchans = atv->get_diskstream()->n_channels().n_audio(); + RouteTimeAxisView& atv (*(dynamic_cast<RouteTimeAxisView*>(&trackview))); // ick + uint32_t nchans = atv.get_diskstream()->n_channels().n_audio(); uint32_t n; uint32_t nwaves = std::min (nchans, audio_region()->n_channels()); gdouble ht; - if (trackview->current_height() < NAME_HIGHLIGHT_THRESH) { - ht = ((trackview->current_height()) / (double) nchans); + if (trackview.current_height() < NAME_HIGHLIGHT_THRESH) { + ht = ((trackview.current_height()) / (double) nchans); } else { - ht = ((trackview->current_height() - NAME_HIGHLIGHT_SIZE) / (double) nchans); + ht = ((trackview.current_height() - NAME_HIGHLIGHT_SIZE) / (double) nchans); } gdouble yoff = which * ht; @@ -998,7 +998,7 @@ AudioRegionView::add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *ev) item->w2i (x, y); - nframes_t fx = trackview->editor().pixel_to_frame (x); + nframes_t fx = trackview.editor().pixel_to_frame (x); if (fx > _region->length()) { return; @@ -1012,21 +1012,21 @@ AudioRegionView::add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *ev) gain_line->view_to_model_coord (x, y); - trackview->session().begin_reversible_command (_("add gain control point")); + trackview.session().begin_reversible_command (_("add gain control point")); XMLNode &before = audio_region()->envelope()->get_state(); if (!audio_region()->envelope_active()) { XMLNode ®ion_before = audio_region()->get_state(); audio_region()->set_envelope_active(true); XMLNode ®ion_after = audio_region()->get_state(); - trackview->session().add_command (new MementoCommand<AudioRegion>(*(audio_region().get()), ®ion_before, ®ion_after)); + trackview.session().add_command (new MementoCommand<AudioRegion>(*(audio_region().get()), ®ion_before, ®ion_after)); } audio_region()->envelope()->add (fx, y); XMLNode &after = audio_region()->envelope()->get_state(); - trackview->session().add_command (new MementoCommand<AutomationList>(*audio_region()->envelope().get(), &before, &after)); - trackview->session().commit_reversible_command (); + trackview.session().add_command (new MementoCommand<AutomationList>(*audio_region()->envelope().get(), &before, &after)); + trackview.session().commit_reversible_command (); } void @@ -1141,9 +1141,9 @@ AudioRegionView::set_waveform_scale (WaveformScale scale) GhostRegion* -AudioRegionView::add_ghost (TimeAxisViewPtr tv) +AudioRegionView::add_ghost (TimeAxisView& tv) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (trackview); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&trackview); assert(rtv); double unit_position = _region->position () / samples_per_unit; diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h index ce8d542586..826f58dece 100644 --- a/gtk2_ardour/audio_region_view.h +++ b/gtk2_ardour/audio_region_view.h @@ -49,13 +49,13 @@ class AudioRegionView : public RegionView { public: AudioRegionView (ArdourCanvas::Group *, - RouteTimeAxisViewPtr, + RouteTimeAxisView&, boost::shared_ptr<ARDOUR::AudioRegion>, double initial_samples_per_unit, Gdk::Color const & basic_color); AudioRegionView (ArdourCanvas::Group *, - RouteTimeAxisViewPtr, + RouteTimeAxisView&, boost::shared_ptr<ARDOUR::AudioRegion>, double samples_per_unit, Gdk::Color const & basic_color, @@ -101,7 +101,7 @@ class AudioRegionView : public RegionView void region_changed (ARDOUR::Change); void envelope_active_changed (); - GhostRegion* add_ghost (TimeAxisViewPtr); + GhostRegion* add_ghost (TimeAxisView&); void reset_fade_in_shape_width (nframes_t); void reset_fade_out_shape_width (nframes_t); diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index fdfef33e91..e61bd6e744 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -55,14 +55,14 @@ using namespace ARDOUR; using namespace PBD; using namespace Editing; -AudioStreamView::AudioStreamView (AudioTimeAxisViewPtr tv) +AudioStreamView::AudioStreamView (AudioTimeAxisView& tv) : StreamView (tv) { crossfades_visible = true; color_handler (); _amplitude_above_axis = 1.0; - use_rec_regions = tv->editor().show_waveforms_recording (); + use_rec_regions = tv.editor().show_waveforms_recording (); Config->ParameterChanged.connect (sigc::mem_fun (*this, &AudioStreamView::parameter_changed)); } @@ -113,7 +113,7 @@ AudioStreamView::create_region_view (boost::shared_ptr<Region> r, bool wait_for_ return 0; } - switch (_trackview->audio_track()->mode()) { + switch (_trackview.audio_track()->mode()) { case NonLayered: case Normal: @@ -205,7 +205,7 @@ AudioStreamView::remove_region_view (boost::weak_ptr<Region> weak_r) return; } - if (!_trackview->session().deletion_in_progress()) { + if (!_trackview.session().deletion_in_progress()) { for (list<CrossfadeView *>::iterator i = crossfade_views.begin(); i != crossfade_views.end();) { list<CrossfadeView*>::iterator tmp; @@ -337,7 +337,7 @@ AudioStreamView::add_crossfade (boost::shared_ptr<Crossfade> crossfade) } } - CrossfadeView *cv = new CrossfadeView (_trackview->canvas_display (), + CrossfadeView *cv = new CrossfadeView (_trackview.canvas_display (), _trackview, crossfade, _samples_per_unit, @@ -346,7 +346,7 @@ AudioStreamView::add_crossfade (boost::shared_ptr<Crossfade> crossfade) cv->set_valid (true); crossfade->Invalidated.connect (mem_fun (*this, &AudioStreamView::remove_crossfade)); crossfade_views.push_back (cv); - if (!_trackview->session().config.get_xfades_visible() || !crossfades_visible || _layer_display == Stacked) { + if (!_trackview.session().config.get_xfades_visible() || !crossfades_visible || _layer_display == Stacked) { cv->hide (); } } @@ -389,13 +389,13 @@ AudioStreamView::redisplay_diskstream () // Add and display region and crossfade views, and flag them as valid - if (_trackview->is_audio_track()) { - _trackview->get_diskstream()->playlist()->foreach_region( + if (_trackview.is_audio_track()) { + _trackview.get_diskstream()->playlist()->foreach_region( sigc::hide_return (sigc::mem_fun (*this, &StreamView::add_region_view)) ); boost::shared_ptr<AudioPlaylist> apl = boost::dynamic_pointer_cast<AudioPlaylist>( - _trackview->get_diskstream()->playlist() + _trackview.get_diskstream()->playlist() ); if (apl) { @@ -455,16 +455,16 @@ AudioStreamView::set_waveform_scale (WaveformScale scale) void AudioStreamView::setup_rec_box () { - //cerr << _trackview->name() << " streamview SRB region_views.size() = " << region_views.size() << endl; + //cerr << _trackview.name() << " streamview SRB region_views.size() = " << region_views.size() << endl; - if (_trackview->session().transport_rolling()) { + if (_trackview.session().transport_rolling()) { // cerr << "\trolling\n"; if (!rec_active && - _trackview->session().record_status() == Session::Recording && - _trackview->get_diskstream()->record_enabled()) { - if (_trackview->audio_track()->mode() == Normal && use_rec_regions && rec_regions.size() == rec_rects.size()) { + _trackview.session().record_status() == Session::Recording && + _trackview.get_diskstream()->record_enabled()) { + if (_trackview.audio_track()->mode() == Normal && use_rec_regions && rec_regions.size() == rec_rects.size()) { /* add a new region, but don't bother if they set use_rec_regions mid-record */ @@ -476,7 +476,7 @@ AudioStreamView::setup_rec_box () rec_data_ready_connections.clear(); // FIXME - boost::shared_ptr<AudioDiskstream> ads = boost::dynamic_pointer_cast<AudioDiskstream>(_trackview->get_diskstream()); + boost::shared_ptr<AudioDiskstream> ads = boost::dynamic_pointer_cast<AudioDiskstream>(_trackview.get_diskstream()); assert(ads); for (uint32_t n=0; n < ads->n_channels().n_audio(); ++n) { @@ -493,14 +493,14 @@ AudioStreamView::setup_rec_box () nframes_t start = 0; if (rec_regions.size() > 0) { - start = rec_regions.back().first->start() + _trackview->get_diskstream()->get_captured_frames(rec_regions.size()-1); + start = rec_regions.back().first->start() + _trackview.get_diskstream()->get_captured_frames(rec_regions.size()-1); } boost::shared_ptr<AudioRegion> region (boost::dynamic_pointer_cast<AudioRegion> (RegionFactory::create (sources, start, 1 , "", 0, (Region::Flag)(Region::DefaultFlags), false))); assert(region); region->block_property_changes (); - region->set_position (_trackview->session().transport_frame(), this); + region->set_position (_trackview.session().transport_frame(), this); rec_regions.push_back (make_pair(region, (RegionView*)0)); } @@ -508,14 +508,14 @@ AudioStreamView::setup_rec_box () boost::shared_ptr<AudioTrack> at; - at = _trackview->audio_track(); /* we know what it is already */ + at = _trackview.audio_track(); /* we know what it is already */ boost::shared_ptr<AudioDiskstream> ds = at->audio_diskstream(); nframes_t frame_pos = ds->current_capture_start (); - gdouble xstart = _trackview->editor().frame_to_pixel (frame_pos); + gdouble xstart = _trackview.editor().frame_to_pixel (frame_pos); gdouble xend; uint32_t fill_color; - switch (_trackview->audio_track()->mode()) { + switch (_trackview.audio_track()->mode()) { case Normal: case NonLayered: xend = xstart; @@ -544,7 +544,7 @@ AudioStreamView::setup_rec_box () RecBoxInfo recbox; recbox.rectangle = rec_rect; - recbox.start = _trackview->session().transport_frame(); + recbox.start = _trackview.session().transport_frame(); recbox.length = 0; rec_rects.push_back (recbox); @@ -555,8 +555,8 @@ AudioStreamView::setup_rec_box () rec_active = true; } else if (rec_active && - (_trackview->session().record_status() != Session::Recording || - !_trackview->get_diskstream()->record_enabled())) { + (_trackview.session().record_status() != Session::Recording || + !_trackview.get_diskstream()->record_enabled())) { screen_update_connection.disconnect(); rec_active = false; rec_updating = false; @@ -635,7 +635,7 @@ AudioStreamView::rec_peak_range_ready (nframes_t start, nframes_t cnt, boost::we rec_data_ready_map[src] = true; - if (rec_data_ready_map.size() == _trackview->get_diskstream()->n_channels().n_audio()) { + if (rec_data_ready_map.size() == _trackview.get_diskstream()->n_channels().n_audio()) { this->update_rec_regions (); rec_data_ready_map.clear(); } @@ -676,7 +676,7 @@ AudioStreamView::update_rec_regions () if (nlen != region->length()) { region->freeze (); - region->set_position (_trackview->get_diskstream()->get_capture_start_frame(n), this); + region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this); region->set_length (nlen, this); region->thaw ("updated"); @@ -687,21 +687,21 @@ AudioStreamView::update_rec_regions () /* also update rect */ ArdourCanvas::SimpleRect * rect = rec_rects[n].rectangle; - gdouble xend = _trackview->editor().frame_to_pixel (region->position() + region->length()); + gdouble xend = _trackview.editor().frame_to_pixel (region->position() + region->length()); rect->property_x2() = xend; } } } else { - nframes_t nlen = _trackview->get_diskstream()->get_captured_frames(n); + nframes_t nlen = _trackview.get_diskstream()->get_captured_frames(n); if (nlen != region->length()) { if (region->source_length(0) >= region->start() + nlen) { region->freeze (); - region->set_position (_trackview->get_diskstream()->get_capture_start_frame(n), this); + region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this); region->set_length (nlen, this); region->thaw ("updated"); @@ -783,13 +783,13 @@ void AudioStreamView::color_handler () { //case cAudioTrackBase: - if (_trackview->is_track()) { + if (_trackview.is_track()) { canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioTrackBase.get(); } //case cAudioBusBase: - if (!_trackview->is_track()) { - if (Profile->get_sae() && _trackview->route()->is_master()) { + if (!_trackview.is_track()) { + if (Profile->get_sae() && _trackview.route()->is_master()) { canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioMasterBusBase.get(); } else { canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioBusBase.get(); diff --git a/gtk2_ardour/audio_streamview.h b/gtk2_ardour/audio_streamview.h index a05275fa20..1c5265f193 100644 --- a/gtk2_ardour/audio_streamview.h +++ b/gtk2_ardour/audio_streamview.h @@ -54,7 +54,7 @@ class Selection; class AudioStreamView : public StreamView { public: - AudioStreamView (AudioTimeAxisViewPtr); + AudioStreamView (AudioTimeAxisView&); ~AudioStreamView (); int set_samples_per_unit (gdouble spp); diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc index 5fd87a2d24..50f0df74cc 100644 --- a/gtk2_ardour/audio_time_axis.cc +++ b/gtk2_ardour/audio_time_axis.cc @@ -80,26 +80,12 @@ AudioTimeAxisView::AudioTimeAxisView (PublicEditor& ed, Session& sess, boost::sh : AxisView(sess) , RouteTimeAxisView(ed, sess, rt, canvas) { - -} - -AudioTimeAxisViewPtr -AudioTimeAxisView::create (PublicEditor& ed, Session& sess, boost::shared_ptr<Route> rt, Canvas& canvas) -{ - AudioTimeAxisViewPtr v (new AudioTimeAxisView (ed, sess, rt, canvas)); - v->init (ed, sess, rt, canvas); - return v; -} - -void -AudioTimeAxisView::init (PublicEditor& ed, Session& sess, boost::shared_ptr<Route> rt, Canvas& canvas) -{ // Make sure things are sane... assert(!is_track() || is_audio_track()); subplugin_menu.set_name ("ArdourContextMenu"); - _view = new AudioStreamView (boost::dynamic_pointer_cast<AudioTimeAxisView> (shared_from_this ())); + _view = new AudioStreamView (*this); ignore_toggle = false; @@ -260,13 +246,13 @@ AudioTimeAxisView::create_automation_child (const Evoral::Parameter& param, bool } boost::shared_ptr<AutomationTimeAxisView> - gain_track = AutomationTimeAxisView::create (_session, - _route, _route->amp(), c, - _editor, - shared_from_this (), - false, - parent_canvas, - _route->amp()->describe_parameter(param)); + gain_track(new AutomationTimeAxisView (_session, + _route, _route->amp(), c, + _editor, + *this, + false, + parent_canvas, + _route->amp()->describe_parameter(param))); add_automation_child(Evoral::Parameter(GainAutomation), gain_track, show); @@ -311,14 +297,14 @@ AudioTimeAxisView::ensure_pan_views (bool show) std::string const name = _route->panner()->describe_parameter (pan_control->parameter ()); - boost::shared_ptr<AutomationTimeAxisView> pan_track = - AutomationTimeAxisView::create (_session, - _route, _route->panner(), pan_control, - _editor, - shared_from_this (), - false, - parent_canvas, - name); + boost::shared_ptr<AutomationTimeAxisView> pan_track ( + new AutomationTimeAxisView (_session, + _route, _route->panner(), pan_control, + _editor, + *this, + false, + parent_canvas, + name)); add_automation_child (*p, pan_track, show); } diff --git a/gtk2_ardour/audio_time_axis.h b/gtk2_ardour/audio_time_axis.h index a4c830e646..48ea7cc816 100644 --- a/gtk2_ardour/audio_time_axis.h +++ b/gtk2_ardour/audio_time_axis.h @@ -39,7 +39,6 @@ #include "editing.h" #include "route_time_axis.h" #include "canvas.h" -#include "shared_ptrs.h" namespace ARDOUR { class Session; @@ -67,9 +66,7 @@ class AutomationTimeAxisView; class AudioTimeAxisView : public RouteTimeAxisView { public: - static AudioTimeAxisViewPtr - create (PublicEditor&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, ArdourCanvas::Canvas& canvas); - + AudioTimeAxisView (PublicEditor&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, ArdourCanvas::Canvas& canvas); virtual ~AudioTimeAxisView (); AudioStreamView* audio_view(); @@ -93,9 +90,6 @@ class AudioTimeAxisView : public RouteTimeAxisView private: friend class AudioStreamView; friend class AudioRegionView; - - AudioTimeAxisView (PublicEditor&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, ArdourCanvas::Canvas& canvas); - void init (PublicEditor&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, ArdourCanvas::Canvas& canvas); void route_active_changed (); diff --git a/gtk2_ardour/automation_line.cc b/gtk2_ardour/automation_line.cc index 7f4852193f..5654ac2296 100644 --- a/gtk2_ardour/automation_line.cc +++ b/gtk2_ardour/automation_line.cc @@ -58,7 +58,7 @@ using namespace Gnome; // for Canvas static const Evoral::IdentityConverter<double, sframes_t> default_converter; -AutomationLine::AutomationLine (const string& name, TimeAxisViewPtr tv, ArdourCanvas::Group& parent, +AutomationLine::AutomationLine (const string& name, TimeAxisView& tv, ArdourCanvas::Group& parent, boost::shared_ptr<AutomationList> al, const Evoral::TimeConverter<double, sframes_t>* converter) : trackview (tv) @@ -88,7 +88,7 @@ AutomationLine::AutomationLine (const string& name, TimeAxisViewPtr tv, ArdourCa alist->StateChanged.connect (mem_fun(*this, &AutomationLine::list_changed)); - trackview->session().register_with_memento_command_factory(alist->id(), this); + trackview.session().register_with_memento_command_factory(alist->id(), this); if (alist->parameter().type() == GainAutomation || alist->parameter().type() == EnvelopeAutomation) { @@ -214,10 +214,10 @@ AutomationLine::modify_point_y (ControlPoint& cp, double y) y = min (1.0, y); y = _height - (y * _height); - double const x = trackview->editor().frame_to_unit (_time_converter.to((*cp.model())->when)); + double const x = trackview.editor().frame_to_unit (_time_converter.to((*cp.model())->when)); - trackview->editor().current_session()->begin_reversible_command (_("automation event move")); - trackview->editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), &get_state(), 0)); + trackview.editor().current_session()->begin_reversible_command (_("automation event move")); + trackview.editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), &get_state(), 0)); cp.move_to (x, y, ControlPoint::Full); reset_line_coords (cp); @@ -232,9 +232,9 @@ AutomationLine::modify_point_y (ControlPoint& cp, double y) update_pending = false; - trackview->editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), 0, &alist->get_state())); - trackview->editor().current_session()->commit_reversible_command (); - trackview->editor().current_session()->set_dirty (); + trackview.editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), 0, &alist->get_state())); + trackview.editor().current_session()->commit_reversible_command (); + trackview.editor().current_session()->set_dirty (); } @@ -263,7 +263,7 @@ AutomationLine::modify_view_point (ControlPoint& cp, double x, double y, bool wi already in frames. it needs to be converted to canvas units. */ - x = trackview->editor().frame_to_unit (x); + x = trackview.editor().frame_to_unit (x); /* clamp x position using view coordinates */ @@ -316,7 +316,7 @@ AutomationLine::modify_view_point (ControlPoint& cp, double x, double y, bool wi /* leave the x-coordinate alone */ - x = trackview->editor().frame_to_unit (_time_converter.to((*cp.model())->when)); + x = trackview.editor().frame_to_unit (_time_converter.to((*cp.model())->when)); } @@ -387,10 +387,10 @@ AutomationLine::model_representation (ControlPoint& cp, ModelRepresentation& mr) /* if xval has not changed, set it directly from the model to avoid rounding errors */ - if (mr.xval == trackview->editor().frame_to_unit(_time_converter.to((*cp.model())->when))) { + if (mr.xval == trackview.editor().frame_to_unit(_time_converter.to((*cp.model())->when))) { mr.xval = (*cp.model())->when; } else { - mr.xval = trackview->editor().unit_to_frame (mr.xval); + mr.xval = trackview.editor().unit_to_frame (mr.xval); } /* convert to model units @@ -640,7 +640,7 @@ AutomationLine::determine_visible_control_points (ALPoints& points) } - set_selected_points (trackview->editor().get_selection().points); + set_selected_points (trackview.editor().get_selection().points); } @@ -724,7 +724,7 @@ AutomationLine::invalidate_point (ALPoints& p, uint32_t index) void AutomationLine::start_drag (ControlPoint* cp, nframes_t x, float fraction) { - if (trackview->editor().current_session() == 0) { /* how? */ + if (trackview.editor().current_session() == 0) { /* how? */ return; } @@ -736,8 +736,8 @@ AutomationLine::start_drag (ControlPoint* cp, nframes_t x, float fraction) str = _("automation range drag"); } - trackview->editor().current_session()->begin_reversible_command (str); - trackview->editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), &get_state(), 0)); + trackview.editor().current_session()->begin_reversible_command (str); + trackview.editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), &get_state(), 0)); drag_x = x; drag_distance = 0; @@ -794,14 +794,14 @@ AutomationLine::line_drag (uint32_t i1, uint32_t i2, float fraction, bool with_p if (range_found) { for (vector<ControlPoint*>::iterator i = control_points.begin(); i != control_points.end(); ++i) { if ((*i)->selected()) { - modify_view_point (*(*i), trackview->editor().unit_to_frame ((*i)->get_x()), ((_height - (*i)->get_y()) /_height) + ydelta, with_push); + modify_view_point (*(*i), trackview.editor().unit_to_frame ((*i)->get_x()), ((_height - (*i)->get_y()) /_height) + ydelta, with_push); } } } else { ControlPoint *cp; for (uint32_t i = i1 ; i <= i2; i++) { cp = nth (i); - modify_view_point (*cp, trackview->editor().unit_to_frame (cp->get_x()), ((_height - cp->get_y()) /_height) + ydelta, with_push); + modify_view_point (*cp, trackview.editor().unit_to_frame (cp->get_x()), ((_height - cp->get_y()) /_height) + ydelta, with_push); } } @@ -831,9 +831,9 @@ AutomationLine::end_drag (ControlPoint* cp) update_pending = false; - trackview->editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), 0, &alist->get_state())); - trackview->editor().current_session()->commit_reversible_command (); - trackview->editor().current_session()->set_dirty (); + trackview.editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), 0, &alist->get_state())); + trackview.editor().current_session()->commit_reversible_command (); + trackview.editor().current_session()->set_dirty (); } @@ -913,7 +913,7 @@ AutomationLine::control_points_adjacent (double xval, uint32_t & before, uint32_ ControlPoint *acp = 0; double unit_xval; - unit_xval = trackview->editor().frame_to_unit (xval); + unit_xval = trackview.editor().frame_to_unit (xval); for (vector<ControlPoint*>::iterator i = control_points.begin(); i != control_points.end(); ++i) { @@ -974,15 +974,15 @@ AutomationLine::remove_point (ControlPoint& cp) model_representation (cp, mr); - trackview->editor().current_session()->begin_reversible_command (_("remove control point")); + trackview.editor().current_session()->begin_reversible_command (_("remove control point")); XMLNode &before = alist->get_state(); alist->erase (mr.start, mr.end); - trackview->editor().current_session()->add_command(new MementoCommand<AutomationList>( + trackview.editor().current_session()->add_command(new MementoCommand<AutomationList>( *alist.get(), &before, &alist->get_state())); - trackview->editor().current_session()->commit_reversible_command (); - trackview->editor().current_session()->set_dirty (); + trackview.editor().current_session()->commit_reversible_command (); + trackview.editor().current_session()->set_dirty (); } void @@ -1058,7 +1058,7 @@ AutomationLine::set_selected_points (PointSelection& points) for (PointSelection::iterator r = points.begin(); r != points.end(); ++r) { - if (r->track != trackview) { + if (&(*r).track != &trackview) { continue; } @@ -1071,8 +1071,8 @@ AutomationLine::set_selected_points (PointSelection& points) double rstart, rend; - rstart = trackview->editor().frame_to_unit ((*r).start); - rend = trackview->editor().frame_to_unit ((*r).end); + rstart = trackview.editor().frame_to_unit ((*r).start); + rend = trackview.editor().frame_to_unit ((*r).end); if ((*i)->get_x() >= rstart && (*i)->get_x() <= rend) { @@ -1102,7 +1102,7 @@ void AutomationLine::set_colors() { void AutomationLine::show_selection () { - TimeSelection& time (trackview->editor().get_selection().time); + TimeSelection& time (trackview.editor().get_selection().time); for (vector<ControlPoint*>::iterator i = control_points.begin(); i != control_points.end(); ++i) { @@ -1111,8 +1111,8 @@ AutomationLine::show_selection () for (list<AudioRange>::iterator r = time.begin(); r != time.end(); ++r) { double rstart, rend; - rstart = trackview->editor().frame_to_unit ((*r).start); - rend = trackview->editor().frame_to_unit ((*r).end); + rstart = trackview.editor().frame_to_unit ((*r).start); + rend = trackview.editor().frame_to_unit ((*r).end); if ((*i)->get_x() >= rstart && (*i)->get_x() <= rend) { (*i)->set_selected(true); @@ -1169,7 +1169,7 @@ AutomationLine::reset_callback (const Evoral::ControlList& events) void AutomationLine::add_model_point (ALPoints& tmp_points, double frame, double yfract) { - tmp_points.push_back (ALPoint (trackview->editor().frame_to_unit (_time_converter.to(frame)), + tmp_points.push_back (ALPoint (trackview.editor().frame_to_unit (_time_converter.to(frame)), _height - (yfract * _height))); } @@ -1191,10 +1191,10 @@ AutomationLine::clear () /* parent must create command */ XMLNode &before = get_state(); alist->clear(); - trackview->editor().current_session()->add_command ( + trackview.editor().current_session()->add_command ( new MementoCommand<AutomationLine>(*this, &before, &get_state())); - trackview->editor().current_session()->commit_reversible_command (); - trackview->editor().current_session()->set_dirty (); + trackview.editor().current_session()->commit_reversible_command (); + trackview.editor().current_session()->set_dirty (); } void diff --git a/gtk2_ardour/automation_line.h b/gtk2_ardour/automation_line.h index 1f3c72c4c7..136196cd72 100644 --- a/gtk2_ardour/automation_line.h +++ b/gtk2_ardour/automation_line.h @@ -29,7 +29,6 @@ #include <sigc++/signal.h> #include "canvas.h" #include "simplerect.h" -#include "shared_ptrs.h" #include "evoral/TimeConverter.hpp" @@ -56,7 +55,7 @@ namespace Gnome { class AutomationLine : public sigc::trackable, public PBD::StatefulThingWithGoingAway { public: - AutomationLine (const std::string& name, TimeAxisViewPtr, ArdourCanvas::Group&, + AutomationLine (const std::string& name, TimeAxisView&, ArdourCanvas::Group&, boost::shared_ptr<ARDOUR::AutomationList>, const Evoral::TimeConverter<double, ARDOUR::sframes_t>* converter = 0); virtual ~AutomationLine (); @@ -98,7 +97,7 @@ class AutomationLine : public sigc::trackable, public PBD::StatefulThingWithGoin void set_uses_gain_mapping (bool yn); bool get_uses_gain_mapping () const { return _uses_gain_mapping; } - TimeAxisViewPtr trackview; + TimeAxisView& trackview; ArdourCanvas::Group& canvas_group() const { return *group; } ArdourCanvas::Item& parent_group() const { return _parent_group; } diff --git a/gtk2_ardour/automation_region_view.cc b/gtk2_ardour/automation_region_view.cc index f3749fd48b..80dbd669ca 100644 --- a/gtk2_ardour/automation_region_view.cc +++ b/gtk2_ardour/automation_region_view.cc @@ -28,7 +28,7 @@ #include "i18n.h" AutomationRegionView::AutomationRegionView(ArdourCanvas::Group* parent, - AutomationTimeAxisViewPtr time_axis, + AutomationTimeAxisView& time_axis, boost::shared_ptr<ARDOUR::Region> region, const Evoral::Parameter& param, boost::shared_ptr<ARDOUR::AutomationList> list, @@ -56,7 +56,7 @@ AutomationRegionView::init (Gdk::Color const & basic_color, bool wfd) reset_width_dependent_items ((double) _region->length() / samples_per_unit); - set_height (trackview->current_height()); + set_height (trackview.current_height()); _region->StateChanged.connect (mem_fun(*this, &AutomationRegionView::region_changed)); @@ -75,7 +75,7 @@ AutomationRegionView::create_line (boost::shared_ptr<ARDOUR::AutomationList> lis _line->set_interpolation(list->interpolation()); _line->show(); _line->show_all_control_points(); - _line->set_height ((uint32_t)rint(trackview->current_height() - NAME_HIGHLIGHT_SIZE)); + _line->set_height ((uint32_t)rint(trackview.current_height() - NAME_HIGHLIGHT_SIZE)); } bool @@ -83,7 +83,7 @@ AutomationRegionView::canvas_event(GdkEvent* ev) { if (ev->type == GDK_BUTTON_RELEASE) { - const nframes_t when = trackview->editor().pixel_to_frame((nframes_t)ev->button.x) + const nframes_t when = trackview.editor().pixel_to_frame((nframes_t)ev->button.x) - _region->position(); add_automation_event(ev, when, ev->button.y); } @@ -104,13 +104,13 @@ AutomationRegionView::add_automation_event (GdkEvent* event, nframes_t when, dou assert(_line); double x = 0; - AutomationTimeAxisViewPtr view = automation_view(); + AutomationTimeAxisView* const view = automation_view(); view->canvas_display()->w2i (x, y); /* compute vertical fractional position */ - const double h = trackview->current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 2; + const double h = trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 2; y = 1.0 - (y / h); /* map using line */ diff --git a/gtk2_ardour/automation_region_view.h b/gtk2_ardour/automation_region_view.h index 55c1b77d64..e6531821d3 100644 --- a/gtk2_ardour/automation_region_view.h +++ b/gtk2_ardour/automation_region_view.h @@ -40,7 +40,7 @@ class AutomationRegionView : public RegionView { public: AutomationRegionView(ArdourCanvas::Group*, - AutomationTimeAxisViewPtr, + AutomationTimeAxisView&, boost::shared_ptr<ARDOUR::Region>, const Evoral::Parameter& parameter, boost::shared_ptr<ARDOUR::AutomationList>, @@ -51,15 +51,14 @@ public: void init (Gdk::Color const & basic_color, bool wfd); - inline AutomationTimeAxisViewPtr automation_view() const { - return boost::dynamic_pointer_cast<AutomationTimeAxisView> (trackview); - } + inline AutomationTimeAxisView* automation_view() const + { return dynamic_cast<AutomationTimeAxisView*>(&trackview); } void set_line(boost::shared_ptr<AutomationLine> line) { _line = line; } boost::shared_ptr<AutomationLine> line() { return _line; } // We are a ghost. Meta ghosts? Crazy talk. - virtual GhostRegion* add_ghost(TimeAxisViewPtr) { return 0; } + virtual GhostRegion* add_ghost(TimeAxisView&) { return NULL; } void set_height (double); void reset_width_dependent_items(double pixel_width); diff --git a/gtk2_ardour/automation_selectable.h b/gtk2_ardour/automation_selectable.h index 7a157d261c..e7139bedf0 100644 --- a/gtk2_ardour/automation_selectable.h +++ b/gtk2_ardour/automation_selectable.h @@ -31,9 +31,9 @@ struct AutomationSelectable : public Selectable nframes_t end; double low_fract; double high_fract; - TimeAxisViewPtr track; + TimeAxisView& track; - AutomationSelectable (nframes_t s, nframes_t e, double l, double h, TimeAxisViewPtr atv) + AutomationSelectable (nframes_t s, nframes_t e, double l, double h, TimeAxisView& atv) : start (s), end (e), low_fract (l), high_fract (h), track (atv) {} bool operator== (const AutomationSelectable& other) { @@ -41,7 +41,7 @@ struct AutomationSelectable : public Selectable end == other.end && low_fract == other.low_fract && high_fract == other.high_fract && - track == other.track; + &track == &other.track; } }; diff --git a/gtk2_ardour/automation_streamview.cc b/gtk2_ardour/automation_streamview.cc index 86fd695e07..1654e7e5a9 100644 --- a/gtk2_ardour/automation_streamview.cc +++ b/gtk2_ardour/automation_streamview.cc @@ -52,16 +52,16 @@ using namespace ARDOUR; using namespace PBD; using namespace Editing; -AutomationStreamView::AutomationStreamView (AutomationTimeAxisViewPtr tv) - : StreamView (boost::dynamic_pointer_cast<RouteTimeAxisView> (tv->get_parent()), - new ArdourCanvas::Group(*tv->canvas_display())) - , _controller(tv->controller()) +AutomationStreamView::AutomationStreamView (AutomationTimeAxisView& tv) + : StreamView (*dynamic_cast<RouteTimeAxisView*>(tv.get_parent()), + new ArdourCanvas::Group(*tv.canvas_display())) + , _controller(tv.controller()) , _automation_view(tv) { //canvas_rect->property_fill_color_rgba() = stream_base_color; canvas_rect->property_outline_color_rgba() = RGBA_BLACK; - use_rec_regions = tv->editor().show_waveforms_recording (); + use_rec_regions = tv.editor().show_waveforms_recording (); } AutomationStreamView::~AutomationStreamView () @@ -165,8 +165,8 @@ AutomationStreamView::redisplay_diskstream () } // Add and display region views, and flag them as valid - if (_trackview->is_track()) { - _trackview->get_diskstream()->playlist()->foreach_region ( + if (_trackview.is_track()) { + _trackview.get_diskstream()->playlist()->foreach_region ( sigc::hide_return (sigc::mem_fun (*this, &StreamView::add_region_view)) ); } @@ -199,11 +199,11 @@ AutomationStreamView::rec_data_range_ready (jack_nframes_t start, jack_nframes_t void AutomationStreamView::color_handler () { - /*if (_trackview->is_midi_track()) { + /*if (_trackview.is_midi_track()) { canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiTrackBase.get(); } - if (!_trackview->is_midi_track()) { + if (!_trackview.is_midi_track()) { canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiBusBase.get();; }*/ } diff --git a/gtk2_ardour/automation_streamview.h b/gtk2_ardour/automation_streamview.h index 3134d82c3f..d11de8113b 100644 --- a/gtk2_ardour/automation_streamview.h +++ b/gtk2_ardour/automation_streamview.h @@ -42,7 +42,7 @@ class AutomationRegionView; class AutomationStreamView : public StreamView { public: - AutomationStreamView (AutomationTimeAxisViewPtr tv); + AutomationStreamView (AutomationTimeAxisView& tv); ~AutomationStreamView (); void set_automation_state (ARDOUR::AutoState state); @@ -50,7 +50,7 @@ class AutomationStreamView : public StreamView void redisplay_diskstream (); inline double contents_height() const { - return (_trackview->current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 2); + return (_trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 2); } private: @@ -65,7 +65,7 @@ class AutomationStreamView : public StreamView boost::shared_ptr<AutomationController> _controller; - AutomationTimeAxisViewPtr _automation_view; + AutomationTimeAxisView& _automation_view; }; #endif /* __ardour_automation_streamview_h__ */ diff --git a/gtk2_ardour/automation_time_axis.cc b/gtk2_ardour/automation_time_axis.cc index a210468901..cdd624003f 100644 --- a/gtk2_ardour/automation_time_axis.cc +++ b/gtk2_ardour/automation_time_axis.cc @@ -58,46 +58,20 @@ const string AutomationTimeAxisView::state_node_name = "AutomationChild"; * For region automation (e.g. MIDI CC), pass null for \a. */ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Route> r, - boost::shared_ptr<Automatable> a, boost::shared_ptr<AutomationControl> c, - PublicEditor& e, TimeAxisViewPtr parent, bool show_regions, - ArdourCanvas::Canvas& canvas, const string & nom, const string & nomparent) + boost::shared_ptr<Automatable> a, boost::shared_ptr<AutomationControl> c, + PublicEditor& e, TimeAxisView& parent, bool show_regions, + ArdourCanvas::Canvas& canvas, const string & nom, const string & nomparent) : AxisView (s), - TimeAxisView (s, e, parent, canvas), + TimeAxisView (s, e, &parent, canvas), _route (r), _control (c), _automatable (a), _controller(AutomationController::create(a, c->parameter(), c)), _base_rect (0), + _view (show_regions ? new AutomationStreamView(*this) : NULL), _name (nom), auto_button (X_("")) /* force addition of a label */ { - -} - -AutomationTimeAxisViewPtr -AutomationTimeAxisView::create (Session& s, boost::shared_ptr<Route> r, - boost::shared_ptr<Automatable> a, boost::shared_ptr<AutomationControl> c, - PublicEditor& e, TimeAxisViewPtr parent, bool show_regions, - ArdourCanvas::Canvas& canvas, const string & nom, const string & nomparent) -{ - AutomationTimeAxisViewPtr v (new AutomationTimeAxisView (s, r, a, c, e, parent, show_regions, canvas, nom, nomparent)); - v->init (s, r, a, c, e, parent, show_regions, canvas, nom, nomparent); - return v; -} - - -void -AutomationTimeAxisView::init (Session& s, boost::shared_ptr<Route> r, - boost::shared_ptr<Automatable> a, boost::shared_ptr<AutomationControl> c, - PublicEditor& e, TimeAxisViewPtr parent, bool show_regions, - ArdourCanvas::Canvas& canvas, const string & nom, const string & nomparent) -{ - if (show_regions) { - _view = new AutomationStreamView (boost::dynamic_pointer_cast<AutomationTimeAxisView> (shared_from_this())); - } else { - _view = 0; - } - if (!have_name_font) { name_font = get_font_for_style (X_("AutomationTrackName")); have_name_font = true; @@ -126,15 +100,9 @@ AutomationTimeAxisView::init (Session& s, boost::shared_ptr<Route> r, _base_rect->set_data ("trackview", this); - _base_rect->signal_event().connect ( - bind ( + _base_rect->signal_event().connect (bind ( mem_fun (_editor, &PublicEditor::canvas_automation_track_event), - _base_rect, - boost::weak_ptr<AutomationTimeAxisView> ( - boost::dynamic_pointer_cast<AutomationTimeAxisView> (shared_from_this ()) - ) - ) - ); + _base_rect, this)); // _base_rect->lower_to_bottom(); @@ -239,7 +207,7 @@ AutomationTimeAxisView::init (Session& s, boost::shared_ptr<Route> r, } else { boost::shared_ptr<AutomationLine> line(new AutomationLine ( ARDOUR::EventTypeMap::instance().to_symbol(_control->parameter()), - boost::dynamic_pointer_cast<AutomationTimeAxisView> (shared_from_this ()), + *this, *_canvas_display, _control->alist())); @@ -412,7 +380,7 @@ AutomationTimeAxisView::set_height (uint32_t h) (height < hNormal && h >= hNormal) || (height >= hNormal || h < hNormal) ); - TimeAxisViewPtr state_parent = get_parent_with_state (); + TimeAxisView* state_parent = get_parent_with_state (); assert(state_parent); XMLNode* xml_node = state_parent->get_automation_child_xml_node (_control->parameter()); @@ -690,7 +658,7 @@ AutomationTimeAxisView::reset_objects_one (AutomationLine& line, PointSelection& for (PointSelection::iterator i = selection.begin(); i != selection.end(); ++i) { - if (i->track != shared_from_this ()) { + if (&(*i).track != this) { continue; } @@ -715,7 +683,7 @@ AutomationTimeAxisView::cut_copy_clear_objects_one (AutomationLine& line, PointS for (PointSelection::iterator i = selection.begin(); i != selection.end(); ++i) { - if (i->track != shared_from_this ()) { + if (&(*i).track != this) { continue; } @@ -920,7 +888,7 @@ AutomationTimeAxisView::set_state (const XMLNode& node) XMLNode* AutomationTimeAxisView::get_state_node () { - TimeAxisViewPtr state_parent = get_parent_with_state (); + TimeAxisView* state_parent = get_parent_with_state (); if (state_parent) { return state_parent->get_automation_child_xml_node (_control->parameter()); diff --git a/gtk2_ardour/automation_time_axis.h b/gtk2_ardour/automation_time_axis.h index 7122350dee..b323d1d3bf 100644 --- a/gtk2_ardour/automation_time_axis.h +++ b/gtk2_ardour/automation_time_axis.h @@ -34,7 +34,6 @@ #include "time_axis_view.h" #include "simplerect.h" #include "automation_controller.h" -#include "shared_ptrs.h" namespace ARDOUR { class Session; @@ -55,18 +54,16 @@ class AutomationController; class AutomationTimeAxisView : public TimeAxisView { public: - - static AutomationTimeAxisViewPtr - create (ARDOUR::Session&, - boost::shared_ptr<ARDOUR::Route>, - boost::shared_ptr<ARDOUR::Automatable>, - boost::shared_ptr<ARDOUR::AutomationControl>, - PublicEditor&, - TimeAxisViewPtr parent, - bool show_regions, - ArdourCanvas::Canvas& canvas, - const std::string & name, /* translatable */ - const std::string & plug_name = ""); + AutomationTimeAxisView (ARDOUR::Session&, + boost::shared_ptr<ARDOUR::Route>, + boost::shared_ptr<ARDOUR::Automatable>, + boost::shared_ptr<ARDOUR::AutomationControl>, + PublicEditor&, + TimeAxisView& parent, + bool show_regions, + ArdourCanvas::Canvas& canvas, + const std::string & name, /* translatable */ + const std::string & plug_name = ""); ~AutomationTimeAxisView(); @@ -167,32 +164,6 @@ class AutomationTimeAxisView : public TimeAxisView { static Pango::FontDescription* name_font; static bool have_name_font; - -private: - - AutomationTimeAxisView (ARDOUR::Session&, - boost::shared_ptr<ARDOUR::Route>, - boost::shared_ptr<ARDOUR::Automatable>, - boost::shared_ptr<ARDOUR::AutomationControl>, - PublicEditor&, - TimeAxisViewPtr parent, - bool show_regions, - ArdourCanvas::Canvas& canvas, - const std::string & name, /* translatable */ - const std::string & plug_name = ""); - - void - init (ARDOUR::Session&, - boost::shared_ptr<ARDOUR::Route>, - boost::shared_ptr<ARDOUR::Automatable>, - boost::shared_ptr<ARDOUR::AutomationControl>, - PublicEditor&, - TimeAxisViewPtr parent, - bool show_regions, - ArdourCanvas::Canvas& canvas, - const std::string & name, /* translatable */ - const std::string & plug_name); - }; #endif /* __ardour_gtk_automation_time_axis_h__ */ diff --git a/gtk2_ardour/canvas-note-event.cc b/gtk2_ardour/canvas-note-event.cc index 55d7fabf80..77ef7b263f 100644 --- a/gtk2_ardour/canvas-note-event.cc +++ b/gtk2_ardour/canvas-note-event.cc @@ -220,7 +220,7 @@ CanvasNoteEvent::on_event(GdkEvent* ev) bool select_mod; uint8_t d_velocity = 10; - if (_region.get_time_axis_view()->editor().current_mouse_mode() != Editing::MouseNote) { + if (_region.get_time_axis_view().editor().current_mouse_mode() != Editing::MouseNote) { return false; } diff --git a/gtk2_ardour/canvas-note.cc b/gtk2_ardour/canvas-note.cc index 6ffd95bed2..06234e3e55 100644 --- a/gtk2_ardour/canvas-note.cc +++ b/gtk2_ardour/canvas-note.cc @@ -15,7 +15,7 @@ CanvasNote::on_event(GdkEvent* ev) static double middle_point, last_x; Gdk::Cursor cursor; static NoteEnd note_end; - Editing::MidiEditMode edit_mode = _region.get_trackview()->editor().current_midi_edit_mode(); + Editing::MidiEditMode edit_mode = _region.get_trackview().editor().current_midi_edit_mode(); switch (ev->type) { case GDK_BUTTON_PRESS: diff --git a/gtk2_ardour/crossfade_view.cc b/gtk2_ardour/crossfade_view.cc index 8f8649daf2..63c2115b87 100644 --- a/gtk2_ardour/crossfade_view.cc +++ b/gtk2_ardour/crossfade_view.cc @@ -43,7 +43,7 @@ using namespace Canvas; sigc::signal<void,CrossfadeView*> CrossfadeView::GoingAway; CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent, - RouteTimeAxisViewPtr tv, + RouteTimeAxisView &tv, boost::shared_ptr<Crossfade> xf, double spu, Gdk::Color& basic_color, @@ -69,7 +69,7 @@ CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent, fade_out->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CrossfadeLine.get(); fade_out->property_width_pixels() = 1; - set_height (get_time_axis_view()->current_height()); + set_height (get_time_axis_view().current_height()); /* no frame around the xfade or overlap rects */ @@ -80,7 +80,7 @@ CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent, vestigial_frame->hide(); show_vestigial = false; - group->signal_event().connect (bind (mem_fun (tv->editor(), &PublicEditor::canvas_crossfade_view_event), group, this)); + group->signal_event().connect (bind (mem_fun (tv.editor(), &PublicEditor::canvas_crossfade_view_event), group, this)); crossfade_changed (Change (~0)); @@ -161,7 +161,7 @@ CrossfadeView::redraw_curves () track is either Small or Smaller. */ - double tav_height = get_time_axis_view()->current_height(); + double tav_height = get_time_axis_view().current_height(); if (tav_height == TimeAxisView::hSmaller || tav_height == TimeAxisView::hSmall) { h = tav_height - 3.0; @@ -174,7 +174,7 @@ CrossfadeView::redraw_curves () return; } - npoints = get_time_axis_view()->editor().frame_to_pixel (crossfade->length()); + npoints = get_time_axis_view().editor().frame_to_pixel (crossfade->length()); // npoints = std::min (gdk_screen_width(), npoints); if (!_visible || !crossfade->active() || npoints < 3) { diff --git a/gtk2_ardour/crossfade_view.h b/gtk2_ardour/crossfade_view.h index 6154ab088d..fc41f7f721 100644 --- a/gtk2_ardour/crossfade_view.h +++ b/gtk2_ardour/crossfade_view.h @@ -33,7 +33,7 @@ class AudioRegionView; struct CrossfadeView : public TimeAxisViewItem { CrossfadeView (ArdourCanvas::Group*, - RouteTimeAxisViewPtr, + RouteTimeAxisView&, boost::shared_ptr<ARDOUR::Crossfade>, double initial_samples_per_unit, Gdk::Color& basic_color, diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 75648f0486..da1385bbe7 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -270,6 +270,8 @@ Editor::Editor () cut_buffer = new Selection (this); clicked_regionview = 0; + clicked_axisview = 0; + clicked_routeview = 0; clicked_crossfadeview = 0; clicked_control_point = 0; last_update_frame = 0; @@ -328,6 +330,8 @@ Editor::Editor () leftmost_frame = 0; ignore_mouse_mode_toggle = false; ignore_midi_edit_mode_toggle = false; + current_stepping_trackview = 0; + entered_track = 0; entered_regionview = 0; entered_marker = 0; clear_entered_track = false; @@ -749,7 +753,7 @@ Editor::set_entered_regionview (RegionView* rv) } void -Editor::set_entered_track (TimeAxisViewPtr tav) +Editor::set_entered_track (TimeAxisView* tav) { if (entered_track) { entered_track->exited (); @@ -778,10 +782,10 @@ Editor::show_window () to be re-hidden */ - TimeAxisViewPtr tv; + TimeAxisView *tv; for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - tv = (static_cast<TimeAxisViewPtr>(*i)); + tv = (static_cast<TimeAxisView*>(*i)); tv->reset_height (); } } @@ -1172,7 +1176,7 @@ Editor::connect_to_session (Session *t) session->tempo_map().apply_with_metrics (*this, &Editor::draw_metric_marks); for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - (static_cast<TimeAxisViewPtr>(*i))->set_samples_per_unit (frames_per_unit); + (static_cast<TimeAxisView*>(*i))->set_samples_per_unit (frames_per_unit); } start_scrolling (); @@ -1494,7 +1498,7 @@ Editor::build_track_region_context_menu (nframes64_t frame) MenuList& edit_items = track_region_context_menu.items(); edit_items.clear(); - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (clicked_axisview); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (clicked_axisview); if (rtv) { boost::shared_ptr<Diskstream> ds; @@ -1531,7 +1535,7 @@ Editor::build_track_crossfade_context_menu (nframes64_t frame) MenuList& edit_items = track_crossfade_context_menu.items(); edit_items.clear (); - AudioTimeAxisViewPtr atv = boost::dynamic_pointer_cast<AudioTimeAxisView> (clicked_axisview); + AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*> (clicked_axisview); if (atv) { boost::shared_ptr<Diskstream> ds; @@ -2498,18 +2502,18 @@ Editor::get_state () * TimeAxisView may be 0. Layer index is the layer number if the TimeAxisView is valid and is * in stacked region display mode, otherwise 0. */ -std::pair<TimeAxisViewPtr, layer_t> +std::pair<TimeAxisView *, layer_t> Editor::trackview_by_y_position (double y) { for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) { - std::pair<TimeAxisViewPtr, int> const r = (*iter)->covers_y_position (y); + std::pair<TimeAxisView*, int> const r = (*iter)->covers_y_position (y); if (r.first) { return r; } } - return std::make_pair (TimeAxisViewPtr (), 0); + return std::make_pair ( (TimeAxisView *) 0, 0); } void @@ -3686,7 +3690,7 @@ Editor::mouse_select_button_release (GdkEventButton* ev) } Editor::TrackViewList * -Editor::get_valid_views (TimeAxisViewPtr track, RouteGroup* group) +Editor::get_valid_views (TimeAxisView* track, RouteGroup* group) { TrackViewList::iterator i; @@ -4086,13 +4090,8 @@ Editor::restore_editing_space () */ void -Editor::new_playlists (boost::weak_ptr<TimeAxisView> w) +Editor::new_playlists (TimeAxisView* v) { - TimeAxisViewPtr v = w.lock (); - if (!v) { - return; - } - begin_reversible_command (_("new playlists")); vector<boost::shared_ptr<ARDOUR::Playlist> > playlists; session->get_playlists(playlists); @@ -4107,13 +4106,8 @@ Editor::new_playlists (boost::weak_ptr<TimeAxisView> w) */ void -Editor::copy_playlists (boost::weak_ptr<TimeAxisView> w) +Editor::copy_playlists (TimeAxisView* v) { - TimeAxisViewPtr v = w.lock (); - if (!v) { - return; - } - begin_reversible_command (_("copy playlists")); vector<boost::shared_ptr<ARDOUR::Playlist> > playlists; session->get_playlists(playlists); @@ -4127,13 +4121,8 @@ Editor::copy_playlists (boost::weak_ptr<TimeAxisView> w) */ void -Editor::clear_playlists (boost::weak_ptr<TimeAxisView> w) +Editor::clear_playlists (TimeAxisView* v) { - TimeAxisViewPtr v = w.lock (); - if (!v) { - return; - } - begin_reversible_command (_("clear playlists")); vector<boost::shared_ptr<ARDOUR::Playlist> > playlists; session->get_playlists(playlists); @@ -4142,21 +4131,21 @@ Editor::clear_playlists (boost::weak_ptr<TimeAxisView> w) } void -Editor::mapped_use_new_playlist (RouteTimeAxisViewPtr atv, uint32_t sz, vector<boost::shared_ptr<ARDOUR::Playlist> > const & playlists) +Editor::mapped_use_new_playlist (RouteTimeAxisView& atv, uint32_t sz, vector<boost::shared_ptr<ARDOUR::Playlist> > const & playlists) { - atv->use_new_playlist (sz > 1 ? false : true, playlists); + atv.use_new_playlist (sz > 1 ? false : true, playlists); } void -Editor::mapped_use_copy_playlist (RouteTimeAxisViewPtr atv, uint32_t sz, vector<boost::shared_ptr<ARDOUR::Playlist> > const & playlists) +Editor::mapped_use_copy_playlist (RouteTimeAxisView& atv, uint32_t sz, vector<boost::shared_ptr<ARDOUR::Playlist> > const & playlists) { - atv->use_copy_playlist (sz > 1 ? false : true, playlists); + atv.use_copy_playlist (sz > 1 ? false : true, playlists); } void -Editor::mapped_clear_playlist (RouteTimeAxisViewPtr atv, uint32_t sz) +Editor::mapped_clear_playlist (RouteTimeAxisView& atv, uint32_t sz) { - atv->clear_playlist (); + atv.clear_playlist (); } bool @@ -4481,7 +4470,7 @@ Editor::idle_visual_changer () } struct EditorOrderTimeAxisSorter { - bool operator() (const TimeAxisViewPtr a, const TimeAxisViewPtr b) const { + bool operator() (const TimeAxisView* a, const TimeAxisView* b) const { return a->order () < b->order (); } }; @@ -4613,7 +4602,7 @@ Editor::get_regions_at (RegionSelection& rs, nframes64_t where, const TrackSelec } for (TrackSelection::const_iterator t = tracks->begin(); t != tracks->end(); ++t) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView>(*t); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(*t); if (rtv) { boost::shared_ptr<Diskstream> ds; boost::shared_ptr<Playlist> pl; @@ -4648,7 +4637,7 @@ Editor::get_regions_after (RegionSelection& rs, nframes64_t where, const TrackSe } for (TrackSelection::const_iterator t = tracks->begin(); t != tracks->end(); ++t) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView>(*t); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(*t); if (rtv) { boost::shared_ptr<Diskstream> ds; boost::shared_ptr<Playlist> pl; @@ -4688,7 +4677,7 @@ Editor::get_regions_for_action (RegionSelection& rs, bool allow_entered) for (RegionSelection::iterator i = to_map.begin (); i != to_map.end(); ++i) { - RouteGroup* g = (*i)->get_time_axis_view()->route_group (); + RouteGroup* g = (*i)->get_time_axis_view().route_group (); if (g && g->active_property (RouteGroup::Edit)) { tracks.add (axis_views_from_routes (g->route_list())); } @@ -4704,9 +4693,9 @@ Editor::get_regions_corresponding_to (boost::shared_ptr<Region> region, vector<R for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - RouteTimeAxisViewPtr tatv; + RouteTimeAxisView* tatv; - if ((tatv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i)) != 0) { + if ((tatv = dynamic_cast<RouteTimeAxisView*> (*i)) != 0) { boost::shared_ptr<Playlist> pl; vector<boost::shared_ptr<Region> > results; @@ -4798,7 +4787,7 @@ _idle_resizer (gpointer arg) } void -Editor::add_to_idle_resize (TimeAxisViewPtr view, int32_t h) +Editor::add_to_idle_resize (TimeAxisView* view, int32_t h) { if (resize_idle_id < 0) { resize_idle_id = g_idle_add (_idle_resizer, this); @@ -4837,7 +4826,7 @@ Editor::idle_resize () { _pending_resize_view->idle_resize (_pending_resize_view->current_height() + _pending_resize_amount); - if (boost::dynamic_pointer_cast<AutomationTimeAxisView> (_pending_resize_view) == 0 && + if (dynamic_cast<AutomationTimeAxisView*> (_pending_resize_view) == 0 && selection->tracks.contains (_pending_resize_view)) { for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { @@ -4882,7 +4871,7 @@ Editor::axis_views_from_routes (list<Route*> r) const for (list<Route*>::const_iterator i = r.begin(); i != r.end(); ++i) { TrackViewList::const_iterator j = track_views.begin (); while (j != track_views.end()) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*j); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*j); if (rtv && rtv->route().get() == *i) { t.push_back (rtv); } @@ -4899,8 +4888,8 @@ Editor::handle_new_route (RouteList& routes) { ENSURE_GUI_THREAD (bind (mem_fun (*this, &Editor::handle_new_route), routes)); - RouteTimeAxisViewPtr rtv; - list<RouteTimeAxisViewPtr> new_views; + RouteTimeAxisView *rtv; + list<RouteTimeAxisView*> new_views; for (RouteList::iterator x = routes.begin(); x != routes.end(); ++x) { boost::shared_ptr<Route> route = (*x); @@ -4912,9 +4901,9 @@ Editor::handle_new_route (RouteList& routes) DataType dt = route->input()->default_type(); if (dt == ARDOUR::DataType::AUDIO) { - rtv = AudioTimeAxisView::create (*this, *session, route, *track_canvas); + rtv = new AudioTimeAxisView (*this, *session, route, *track_canvas); } else if (dt == ARDOUR::DataType::MIDI) { - rtv = MidiTimeAxisView::create (*this, *session, route, *track_canvas); + rtv = new MidiTimeAxisView (*this, *session, route, *track_canvas); } else { throw unknown_type(); } @@ -4942,16 +4931,16 @@ Editor::handle_new_route (RouteList& routes) } void -Editor::remove_route (TimeAxisViewPtr tv) +Editor::remove_route (TimeAxisView *tv) { - ENSURE_GUI_THREAD (bind (mem_fun(*this, &Editor::remove_route), tv)); + ENSURE_GUI_THREAD(bind (mem_fun(*this, &Editor::remove_route), tv)); TrackViewList::iterator i; boost::shared_ptr<Route> route; - TimeAxisViewPtr next_tv; + TimeAxisView* next_tv; if (tv == entered_track) { - entered_track.reset (); + entered_track = 0; } if ((i = find (track_views.begin(), track_views.end(), tv)) != track_views.end()) { @@ -4959,7 +4948,7 @@ Editor::remove_route (TimeAxisViewPtr tv) i = track_views.erase (i); if (track_views.empty()) { - next_tv.reset (); + next_tv = 0; } else if (i == track_views.end()) { next_tv = track_views.front(); } else { @@ -4970,7 +4959,7 @@ Editor::remove_route (TimeAxisViewPtr tv) if (current_mixer_strip && current_mixer_strip->route() == route) { if (next_tv) { - set_selected_mixer_strip (next_tv); + set_selected_mixer_strip (*next_tv); } else { /* make the editor mixer strip go away setting the * button to inactive (which also unticks the menu option) @@ -4982,9 +4971,9 @@ Editor::remove_route (TimeAxisViewPtr tv) } void -Editor::hide_track_in_display (TimeAxisViewPtr tv, bool temponly) +Editor::hide_track_in_display (TimeAxisView& tv, bool temponly) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (&tv); if (rtv && current_mixer_strip && (rtv->route() == current_mixer_strip->route())) { // this will hide the mixer strip @@ -5006,27 +4995,27 @@ Editor::sync_track_view_list_and_routes () } void -Editor::foreach_time_axis_view (sigc::slot<void,TimeAxisViewPtr> theslot) +Editor::foreach_time_axis_view (sigc::slot<void,TimeAxisView&> theslot) { for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - theslot (*i); + theslot (**i); } } -RouteTimeAxisViewPtr +RouteTimeAxisView* Editor::get_route_view_by_id (PBD::ID& id) { - RouteTimeAxisViewPtr v; + RouteTimeAxisView* v; for(TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - if((v = boost::dynamic_pointer_cast<RouteTimeAxisView>(*i)) != 0) { + if((v = dynamic_cast<RouteTimeAxisView*>(*i)) != 0) { if(v->route()->id() == id) { return v; } } } - return RouteTimeAxisViewPtr (); + return 0; } void @@ -5082,22 +5071,3 @@ Editor::hide_region_from_region_list () _regions->selection_mapover (mem_fun (*this, &Editor::hide_a_region)); } -TimeAxisViewPtr -Editor::find_time_axis (TimeAxisView* v) -{ - TrackViewList::iterator i = track_views.begin (); - while (i != track_views.end()) { - if (i->get() == v) { - return *i; - } - - TimeAxisViewPtr p = (*i)->find_time_axis (v); - if (p) { - return p; - } - - ++i; - } - - return TimeAxisViewPtr (); -} diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index b4731e8c64..e1c06a6ebd 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -191,16 +191,16 @@ class Editor : public PublicEditor #ifdef WITH_CMT void add_imageframe_time_axis(const std::string & track_name, void*) ; - void add_imageframe_marker_time_axis(const std::string & track_name, TimeAxisViewPtr marked_track, void*) ; + void add_imageframe_marker_time_axis(const std::string & track_name, TimeAxisView* marked_track, void*) ; void connect_to_image_compositor() ; void scroll_timeaxis_to_imageframe_item(const TimeAxisViewItem* item) ; #endif - TimeAxisViewPtr get_named_time_axis(const std::string & name) ; - void foreach_time_axis_view (sigc::slot<void,TimeAxisViewPtr>); - void add_to_idle_resize (TimeAxisViewPtr, int32_t); + TimeAxisView* get_named_time_axis(const std::string & name) ; + void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>); + void add_to_idle_resize (TimeAxisView*, int32_t); - RouteTimeAxisViewPtr get_route_view_by_id (PBD::ID& id); + RouteTimeAxisView* get_route_view_by_id (PBD::ID& id); void consider_auditioning (boost::shared_ptr<ARDOUR::Region>); void hide_a_region (boost::shared_ptr<ARDOUR::Region>); @@ -273,7 +273,7 @@ class Editor : public PublicEditor Selection& get_selection() const { return *selection; } Selection& get_cut_buffer() const { return *cut_buffer; } - bool extend_selection_to_track (TimeAxisViewPtr); + bool extend_selection_to_track (TimeAxisView&); void play_selection (); void select_all_in_track (Selection::Operation op); @@ -315,11 +315,11 @@ class Editor : public PublicEditor PlaylistSelector& playlist_selector() const; void clear_playlist (boost::shared_ptr<ARDOUR::Playlist>); - void new_playlists (boost::weak_ptr<TimeAxisView>); - void copy_playlists (boost::weak_ptr<TimeAxisView>); - void clear_playlists (boost::weak_ptr<TimeAxisView>); + void new_playlists (TimeAxisView* v); + void copy_playlists (TimeAxisView* v); + void clear_playlists (TimeAxisView* v); - TrackViewList* get_valid_views (TimeAxisViewPtr, ARDOUR::RouteGroup* grp = 0); + TrackViewList* get_valid_views (TimeAxisView*, ARDOUR::RouteGroup* grp = 0); void get_onscreen_tracks (TrackViewList&); Width editor_mixer_strip_width; @@ -327,8 +327,8 @@ class Editor : public PublicEditor void show_editor_mixer (bool yn); void create_editor_mixer (); void show_editor_list (bool yn); - void set_selected_mixer_strip (TimeAxisViewPtr); - void hide_track_in_display (TimeAxisViewPtr tv, bool temporary = false); + void set_selected_mixer_strip (TimeAxisView&); + void hide_track_in_display (TimeAxisView& tv, bool temporary = false); /* nudge is initiated by transport controls owned by ARDOUR_UI */ @@ -433,7 +433,7 @@ class Editor : public PublicEditor PlaylistSelector* _playlist_selector; - typedef std::pair<TimeAxisViewPtr,XMLNode*> TAVState; + typedef std::pair<TimeAxisView*,XMLNode*> TAVState; struct VisualState { double y_position; @@ -531,8 +531,8 @@ class Editor : public PublicEditor void update_cd_marker_display (); void ensure_cd_marker_updated (LocationMarkers * lam, ARDOUR::Location * location); - TimeAxisViewPtr clicked_axisview; - RouteTimeAxisViewPtr clicked_routeview; + TimeAxisView* clicked_axisview; + RouteTimeAxisView* clicked_routeview; /** The last RegionView that was clicked on, or 0 if the last click was not * on a RegionView. This is set up by the canvas event handlers in * editor_canvas_events.cc @@ -545,18 +545,18 @@ class Editor : public PublicEditor void sort_track_selection (TrackSelection* sel = 0); - void get_relevant_tracks (std::set<RouteTimeAxisViewPtr>& relevant_tracks) const; - void get_equivalent_tracks (RouteTimeAxisViewPtr, std::set<RouteTimeAxisViewPtr> &, ARDOUR::RouteGroup::Property) const; + void get_relevant_tracks (std::set<RouteTimeAxisView*>& relevant_tracks) const; + void get_equivalent_tracks (RouteTimeAxisView*, std::set<RouteTimeAxisView*> &, ARDOUR::RouteGroup::Property) const; void get_equivalent_regions (RegionView* rv, std::vector<RegionView*> &, ARDOUR::RouteGroup::Property) const; RegionSelection get_equivalent_regions (RegionSelection &, ARDOUR::RouteGroup::Property) const; - void mapover_tracks (sigc::slot<void,RouteTimeAxisViewPtr,uint32_t> sl, TimeAxisViewPtr, ARDOUR::RouteGroup::Property) const; + void mapover_tracks (sigc::slot<void,RouteTimeAxisView&,uint32_t> sl, TimeAxisView*, ARDOUR::RouteGroup::Property) const; /* functions to be passed to mapover_tracks(), possibly with sigc::bind()-supplied arguments */ - void mapped_get_equivalent_regions (RouteTimeAxisViewPtr, uint32_t, RegionView *, std::vector<RegionView*>*) const; - void mapped_use_new_playlist (RouteTimeAxisViewPtr, uint32_t, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &); - void mapped_use_copy_playlist (RouteTimeAxisViewPtr, uint32_t, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &); - void mapped_clear_playlist (RouteTimeAxisViewPtr, uint32_t); + void mapped_get_equivalent_regions (RouteTimeAxisView&, uint32_t, RegionView *, std::vector<RegionView*>*) const; + void mapped_use_new_playlist (RouteTimeAxisView&, uint32_t, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &); + void mapped_use_copy_playlist (RouteTimeAxisView&, uint32_t, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &); + void mapped_clear_playlist (RouteTimeAxisView&, uint32_t); /* end */ @@ -565,7 +565,7 @@ class Editor : public PublicEditor void catch_vanishing_regionview (RegionView *); - void set_selected_track (TimeAxisViewPtr, Selection::Operation op = Selection::Set, bool no_remove=false); + void set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove=false); void select_all_tracks (); bool set_selected_control_point_from_click (Selection::Operation op = Selection::Set, bool no_remove=false); @@ -601,7 +601,7 @@ class Editor : public PublicEditor void add_selection_context_items (Gtk::Menu_Helpers::MenuList&); void handle_new_route (ARDOUR::RouteList&); - void remove_route (TimeAxisViewPtr); + void remove_route (TimeAxisView *); bool route_removal; Gtk::HBox global_hpacker; @@ -846,7 +846,7 @@ class Editor : public PublicEditor void select_all_selectables_between (bool within); void select_range_between (); - boost::shared_ptr<ARDOUR::Region> find_next_region (nframes64_t, ARDOUR::RegionPoint, int32_t dir, TrackViewList&, TimeAxisViewPtr * = 0); + boost::shared_ptr<ARDOUR::Region> find_next_region (nframes64_t, ARDOUR::RegionPoint, int32_t dir, TrackViewList&, TimeAxisView ** = 0); nframes64_t find_next_region_boundary (nframes64_t, int32_t dir, const TrackViewList&); std::vector<nframes64_t> region_boundary_cache; @@ -969,7 +969,7 @@ class Editor : public PublicEditor /* track views */ TrackViewList track_views; - std::pair<TimeAxisViewPtr, ARDOUR::layer_t> trackview_by_y_position (double); + std::pair<TimeAxisView*, ARDOUR::layer_t> trackview_by_y_position (double); TrackSelection axis_views_from_routes (std::list<ARDOUR::Route *>) const; static Gdk::Cursor* cross_hair_cursor; @@ -1270,7 +1270,7 @@ class Editor : public PublicEditor bool have_pending_keyboard_selection; nframes64_t pending_keyboard_selection_start; - boost::shared_ptr<ARDOUR::Region> select_region_for_operation (int dir, TimeAxisViewPtr *tv); + boost::shared_ptr<ARDOUR::Region> select_region_for_operation (int dir, TimeAxisView **tv); void extend_selection_to_end_of_region (bool next); void extend_selection_to_start_of_region (bool previous); @@ -1350,12 +1350,12 @@ public: bool canvas_region_view_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); bool canvas_region_view_name_highlight_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); bool canvas_region_view_name_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); - bool canvas_stream_view_event (GdkEvent* event,ArdourCanvas::Item*, boost::weak_ptr<TimeAxisView>); + bool canvas_stream_view_event (GdkEvent* event,ArdourCanvas::Item*, RouteTimeAxisView*); bool canvas_marker_event (GdkEvent* event,ArdourCanvas::Item*, Marker*); bool canvas_zoom_rect_event (GdkEvent* event,ArdourCanvas::Item*); bool canvas_tempo_marker_event (GdkEvent* event,ArdourCanvas::Item*, TempoMarker*); bool canvas_meter_marker_event (GdkEvent* event,ArdourCanvas::Item*, MeterMarker*); - bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, boost::weak_ptr<AutomationTimeAxisView>); + bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*) ; bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_meter_bar_event (GdkEvent* event, ArdourCanvas::Item*); @@ -1851,7 +1851,7 @@ public: #ifdef WITH_CMT void handle_new_imageframe_time_axis_view(const std::string & track_name, void* src) ; - void handle_new_imageframe_marker_time_axis_view(const std::string & track_name, TimeAxisViewPtr marked_track) ; + void handle_new_imageframe_marker_time_axis_view(const std::string & track_name, TimeAxisView* marked_track) ; void start_imageframe_grab(ArdourCanvas::Item*, GdkEvent*) ; void start_markerview_grab(ArdourCanvas::Item*, GdkEvent*) ; @@ -1924,12 +1924,12 @@ public: /* tracking step changes of track height */ - TimeAxisViewPtr current_stepping_trackview; + TimeAxisView* current_stepping_trackview; ARDOUR::microseconds_t last_track_height_step_timestamp; gint track_height_step_timeout(); sigc::connection step_timeout; - TimeAxisViewPtr entered_track; + TimeAxisView* entered_track; RegionView* entered_regionview; @@ -1937,9 +1937,9 @@ public: bool clear_entered_track; bool left_track_canvas (GdkEventCrossing*); bool entered_track_canvas (GdkEventCrossing*); - void set_entered_track (TimeAxisViewPtr); + void set_entered_track (TimeAxisView*); void set_entered_regionview (RegionView*); - void ensure_track_visible (TimeAxisViewPtr); + void ensure_track_visible (TimeAxisView*); gint left_automation_track (); bool _new_regionviews_show_envelope; @@ -2011,7 +2011,7 @@ public: bool idle_resize(); friend gboolean _idle_resize (gpointer); int32_t _pending_resize_amount; - TimeAxisViewPtr _pending_resize_view; + TimeAxisView* _pending_resize_view; void visible_order_range (int*, int*) const; @@ -2027,8 +2027,6 @@ public: EditorGroupTabs* _group_tabs; void fit_route_group (ARDOUR::RouteGroup *); - TimeAxisViewPtr find_time_axis (TimeAxisView *); - friend class Drag; friend class RegionDrag; friend class RegionMoveDrag; diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 3c373dfbe9..7762a42322 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -105,7 +105,7 @@ Editor::external_audio_dialog () track_cnt = 0; for (TrackSelection::iterator x = selection->tracks.begin(); x != selection->tracks.end(); ++x) { - AudioTimeAxisViewPtr atv = boost::dynamic_pointer_cast<AudioTimeAxisView>(*x); + AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*>(*x); if (!atv) { continue; @@ -263,12 +263,12 @@ Editor::check_whether_and_how_to_import(string path, bool all_or_nothing) boost::shared_ptr<AudioTrack> Editor::get_nth_selected_audio_track (int nth) const { - AudioTimeAxisViewPtr atv; + AudioTimeAxisView* atv; TrackSelection::iterator x; for (x = selection->tracks.begin(); nth > 0 && x != selection->tracks.end(); ++x) { - atv = boost::dynamic_pointer_cast<AudioTimeAxisView>(*x); + atv = dynamic_cast<AudioTimeAxisView*>(*x); if (!atv) { continue; @@ -278,9 +278,9 @@ Editor::get_nth_selected_audio_track (int nth) const } if (x == selection->tracks.end()) { - atv = boost::dynamic_pointer_cast<AudioTimeAxisView>(selection->tracks.back()); + atv = dynamic_cast<AudioTimeAxisView*>(selection->tracks.back()); } else { - atv = boost::dynamic_pointer_cast<AudioTimeAxisView>(*x); + atv = dynamic_cast<AudioTimeAxisView*>(*x); } if (!atv || !atv->is_audio_track()) { @@ -293,12 +293,12 @@ Editor::get_nth_selected_audio_track (int nth) const boost::shared_ptr<MidiTrack> Editor::get_nth_selected_midi_track (int nth) const { - MidiTimeAxisViewPtr mtv; + MidiTimeAxisView* mtv; TrackSelection::iterator x; for (x = selection->tracks.begin(); nth > 0 && x != selection->tracks.end(); ++x) { - mtv = boost::dynamic_pointer_cast<MidiTimeAxisView>(*x); + mtv = dynamic_cast<MidiTimeAxisView*>(*x); if (!mtv) { continue; @@ -308,9 +308,9 @@ Editor::get_nth_selected_midi_track (int nth) const } if (x == selection->tracks.end()) { - mtv = boost::dynamic_pointer_cast<MidiTimeAxisView>(selection->tracks.back()); + mtv = dynamic_cast<MidiTimeAxisView*>(selection->tracks.back()); } else { - mtv = boost::dynamic_pointer_cast<MidiTimeAxisView>(*x); + mtv = dynamic_cast<MidiTimeAxisView*>(*x); } if (!mtv || !mtv->is_midi_track()) { diff --git a/gtk2_ardour/editor_audiotrack.cc b/gtk2_ardour/editor_audiotrack.cc index 6918004e56..997bf41a3f 100644 --- a/gtk2_ardour/editor_audiotrack.cc +++ b/gtk2_ardour/editor_audiotrack.cc @@ -36,12 +36,12 @@ using namespace PBD; void Editor::set_show_waveforms_recording (bool yn) { - AudioTimeAxisViewPtr atv; + AudioTimeAxisView* atv; if (_show_waveforms_recording != yn) { _show_waveforms_recording = yn; for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - if ((atv = boost::dynamic_pointer_cast<AudioTimeAxisView>(*i)) != 0) { + if ((atv = dynamic_cast<AudioTimeAxisView*>(*i)) != 0) { atv->set_show_waveforms_recording (yn); } } @@ -51,12 +51,12 @@ Editor::set_show_waveforms_recording (bool yn) gint Editor::start_updating () { - RouteTimeAxisViewPtr rtv; + RouteTimeAxisView* rtv; //cerr << "Editor::start_updating () called" << endl;//DEBUG if (is_mapped() && session) { for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView>(*i)) != 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*>(*i)) != 0) { rtv->reset_meter (); } } @@ -72,14 +72,14 @@ Editor::start_updating () gint Editor::stop_updating () { - RouteTimeAxisViewPtr rtv; + RouteTimeAxisView* rtv; meters_running = false; fast_screen_update_connection.disconnect(); //cerr << "Editor::stop_updating () called" << endl;//DEBUG if (is_mapped() && session) { for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView>(*i)) != 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*>(*i)) != 0) { rtv->hide_meter (); } } @@ -102,11 +102,11 @@ Editor::toggle_meter_updating() void Editor::fast_update_strips () { - RouteTimeAxisViewPtr rtv; + RouteTimeAxisView* rtv; if (is_mapped() && session) { for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView>(*i)) != 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*>(*i)) != 0) { rtv->fast_update (); } } diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index ae8a7a230d..498a6cc0fd 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -459,9 +459,9 @@ Editor::idle_drop_paths (vector<ustring> paths, nframes64_t frame, double ypos) void Editor::drop_paths_part_two (const vector<ustring>& paths, nframes64_t frame, double ypos) { - RouteTimeAxisViewPtr tv; + RouteTimeAxisView* tv; - std::pair<TimeAxisViewPtr, int> const tvp = trackview_by_y_position (ypos); + std::pair<TimeAxisView*, int> const tvp = trackview_by_y_position (ypos); if (tvp.first == 0) { /* drop onto canvas background: create new tracks */ @@ -474,13 +474,13 @@ Editor::drop_paths_part_two (const vector<ustring>& paths, nframes64_t frame, do do_embed (paths, Editing::ImportDistinctFiles, ImportAsTrack, frame); } - } else if ((tv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tvp.first)) != 0) { + } else if ((tv = dynamic_cast<RouteTimeAxisView*> (tvp.first)) != 0) { /* check that its an audio track, not a bus */ if (tv->get_diskstream()) { /* select the track, then embed/import */ - selection->set (boost::static_pointer_cast<TimeAxisView> (tv)); + selection->set (tv); if (Profile->get_sae() || Config->get_only_copy_imported_files()) { do_import (paths, Editing::ImportSerializeFiles, Editing::ImportToTrack, SrcBest, frame); @@ -756,7 +756,7 @@ Editor::stop_canvas_autoscroll () bool Editor::left_track_canvas (GdkEventCrossing *ev) { - set_entered_track (TimeAxisViewPtr ()); + set_entered_track (0); set_entered_regionview (0); reset_canvas_action_sensitivity (false); return false; diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 3269f9d011..4a22c2bda7 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -99,7 +99,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (mem_fun(*this, &Editor::track_height_step_timeout), 500); - std::pair<TimeAxisViewPtr, int> const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize); + std::pair<TimeAxisView*, int> const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize); current_stepping_trackview = p.first; if (!current_stepping_trackview) { return false; @@ -134,7 +134,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (mem_fun(*this, &Editor::track_height_step_timeout), 500); - std::pair<TimeAxisViewPtr, int> const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize); + std::pair<TimeAxisView*, int> const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize); current_stepping_trackview = p.first; if (!current_stepping_trackview) { return false; @@ -270,8 +270,8 @@ Editor::canvas_region_view_event (GdkEvent *event, ArdourCanvas::Item* item, Reg case GDK_3BUTTON_PRESS: clicked_regionview = rv; clicked_control_point = 0; - clicked_axisview = rv->get_time_axis_view(); - clicked_routeview = boost::dynamic_pointer_cast<RouteTimeAxisView> (clicked_axisview); + clicked_axisview = &rv->get_time_axis_view(); + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); ret = button_press_handler (item, event, RegionItem); break; @@ -284,12 +284,12 @@ Editor::canvas_region_view_event (GdkEvent *event, ArdourCanvas::Item* item, Reg break; case GDK_ENTER_NOTIFY: - set_entered_track (rv->get_time_axis_view ()); + set_entered_track (&rv->get_time_axis_view ()); set_entered_regionview (rv); break; case GDK_LEAVE_NOTIFY: - set_entered_track (TimeAxisViewPtr ()); + set_entered_track (0); set_entered_regionview (0); break; @@ -301,13 +301,8 @@ Editor::canvas_region_view_event (GdkEvent *event, ArdourCanvas::Item* item, Reg } bool -Editor::canvas_stream_view_event (GdkEvent *event, ArdourCanvas::Item* item, boost::weak_ptr<TimeAxisView> w) +Editor::canvas_stream_view_event (GdkEvent *event, ArdourCanvas::Item* item, RouteTimeAxisView *tv) { - boost::shared_ptr<TimeAxisView> tv = w.lock (); - if (!tv) { - return false; - } - bool ret = FALSE; switch (event->type) { @@ -317,7 +312,7 @@ Editor::canvas_stream_view_event (GdkEvent *event, ArdourCanvas::Item* item, boo clicked_regionview = 0; clicked_control_point = 0; clicked_axisview = tv; - clicked_routeview = boost::dynamic_pointer_cast<RouteTimeAxisView>(tv); + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(tv); ret = button_press_handler (item, event, StreamItem); break; @@ -334,7 +329,7 @@ Editor::canvas_stream_view_event (GdkEvent *event, ArdourCanvas::Item* item, boo break; case GDK_LEAVE_NOTIFY: - set_entered_track (TimeAxisViewPtr ()); + set_entered_track (0); break; default: @@ -345,13 +340,8 @@ Editor::canvas_stream_view_event (GdkEvent *event, ArdourCanvas::Item* item, boo } bool -Editor::canvas_automation_track_event (GdkEvent *event, ArdourCanvas::Item* item, boost::weak_ptr<AutomationTimeAxisView> v) +Editor::canvas_automation_track_event (GdkEvent *event, ArdourCanvas::Item* item, AutomationTimeAxisView *atv) { - boost::shared_ptr<AutomationTimeAxisView> atv = v.lock (); - if (!atv) { - return false; - } - bool ret = false; switch (event->type) { @@ -360,8 +350,8 @@ Editor::canvas_automation_track_event (GdkEvent *event, ArdourCanvas::Item* item case GDK_3BUTTON_PRESS: clicked_regionview = 0; clicked_control_point = 0; - clicked_axisview.reset (); - clicked_routeview.reset (); + clicked_axisview = atv; + clicked_routeview = 0; ret = button_press_handler (item, event, AutomationTrackItem); break; @@ -401,8 +391,8 @@ Editor::canvas_fade_in_event (GdkEvent *event, ArdourCanvas::Item* item, AudioRe case GDK_BUTTON_PRESS: clicked_regionview = rv; clicked_control_point = 0; - clicked_axisview = rv->get_time_axis_view(); - clicked_routeview = boost::dynamic_pointer_cast<RouteTimeAxisView>(clicked_axisview); + clicked_axisview = &rv->get_time_axis_view(); + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); if (event->button.button == 3) { return button_press_handler (item, event, FadeInItem); } @@ -439,8 +429,8 @@ Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item, case GDK_3BUTTON_PRESS: clicked_regionview = rv; clicked_control_point = 0; - clicked_axisview = rv->get_time_axis_view(); - clicked_routeview = boost::dynamic_pointer_cast<RouteTimeAxisView>(clicked_axisview); + clicked_axisview = &rv->get_time_axis_view(); + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); ret = button_press_handler (item, event, FadeInHandleItem); break; @@ -480,8 +470,8 @@ Editor::canvas_fade_out_event (GdkEvent *event, ArdourCanvas::Item* item, AudioR case GDK_BUTTON_PRESS: clicked_regionview = rv; clicked_control_point = 0; - clicked_axisview = rv->get_time_axis_view(); - clicked_routeview = boost::dynamic_pointer_cast<RouteTimeAxisView> (clicked_axisview); + clicked_axisview = &rv->get_time_axis_view(); + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); if (event->button.button == 3) { return button_press_handler (item, event, FadeOutItem); } @@ -518,8 +508,8 @@ Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item, case GDK_3BUTTON_PRESS: clicked_regionview = rv; clicked_control_point = 0; - clicked_axisview = rv->get_time_axis_view(); - clicked_routeview = boost::dynamic_pointer_cast<RouteTimeAxisView>(clicked_axisview); + clicked_axisview = &rv->get_time_axis_view(); + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); ret = button_press_handler (item, event, FadeOutHandleItem); break; @@ -560,7 +550,7 @@ Editor::canvas_crossfade_view_event (GdkEvent* event, ArdourCanvas::Item* item, switch (event->type) { case GDK_BUTTON_PRESS: clicked_crossfadeview = xfv; - clicked_axisview = clicked_crossfadeview->get_time_axis_view(); + clicked_axisview = &clicked_crossfadeview->get_time_axis_view(); if (event->button.button == 3) { return button_press_handler (item, event, CrossfadeViewItem); } @@ -590,10 +580,10 @@ Editor::canvas_crossfade_view_event (GdkEvent* event, ArdourCanvas::Item* item, and proxy to that when required. */ - TimeAxisViewPtr tv (xfv->get_time_axis_view()); - AudioTimeAxisViewPtr atv; + TimeAxisView& tv (xfv->get_time_axis_view()); + AudioTimeAxisView* atv; - if ((atv = boost::dynamic_pointer_cast<AudioTimeAxisView>(tv)) != 0) { + if ((atv = dynamic_cast<AudioTimeAxisView*>(&tv)) != 0) { if (atv->is_audio_track()) { @@ -631,8 +621,8 @@ Editor::canvas_control_point_event (GdkEvent *event, ArdourCanvas::Item* item, C case GDK_2BUTTON_PRESS: case GDK_3BUTTON_PRESS: clicked_control_point = cp; - clicked_axisview = cp->line().trackview; - clicked_routeview = boost::dynamic_pointer_cast<RouteTimeAxisView>(clicked_axisview); + clicked_axisview = &cp->line().trackview; + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); clicked_regionview = 0; break; @@ -779,8 +769,8 @@ Editor::canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas:: case GDK_3BUTTON_PRESS: clicked_regionview = rv; clicked_control_point = 0; - clicked_axisview = clicked_regionview->get_time_axis_view(); - clicked_routeview = boost::dynamic_pointer_cast<RouteTimeAxisView>(clicked_axisview); + clicked_axisview = &clicked_regionview->get_time_axis_view(); + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); ret = button_press_handler (item, event, RegionViewNameHighlight); break; case GDK_BUTTON_RELEASE: @@ -819,8 +809,8 @@ Editor::canvas_region_view_name_event (GdkEvent *event, ArdourCanvas::Item* item case GDK_3BUTTON_PRESS: clicked_regionview = rv; clicked_control_point = 0; - clicked_axisview = clicked_regionview->get_time_axis_view(); - clicked_routeview = boost::dynamic_pointer_cast<RouteTimeAxisView>(clicked_axisview); + clicked_axisview = &clicked_regionview->get_time_axis_view(); + clicked_routeview = dynamic_cast<RouteTimeAxisView*>(clicked_axisview); ret = button_press_handler (item, event, RegionViewName); break; case GDK_BUTTON_RELEASE: @@ -930,12 +920,12 @@ Editor::track_canvas_drag_motion (Glib::RefPtr<Gdk::DragContext> const & c, int double py; nframes64_t const pos = event_frame (&event, &px, &py); - std::pair<TimeAxisViewPtr, int> const tv = trackview_by_y_position (py); + std::pair<TimeAxisView*, int> const tv = trackview_by_y_position (py); if (tv.first == 0) { return true; } - RouteTimeAxisViewPtr rtav = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv.first); + RouteTimeAxisView* rtav = dynamic_cast<RouteTimeAxisView*> (tv.first); if (rtav == 0 || !rtav->is_track ()) { return true; } @@ -945,14 +935,14 @@ Editor::track_canvas_drag_motion (Glib::RefPtr<Gdk::DragContext> const & c, int boost::shared_ptr<Region> region_copy = RegionFactory::create (region); if (boost::dynamic_pointer_cast<AudioRegion> (region_copy) != 0 && - boost::dynamic_pointer_cast<AudioTimeAxisView> (tv.first) == 0) { + dynamic_cast<AudioTimeAxisView*> (tv.first) == 0) { /* audio -> non-audio */ return true; } if (boost::dynamic_pointer_cast<MidiRegion> (region_copy) == 0 && - boost::dynamic_pointer_cast<MidiTimeAxisView> (tv.first) != 0) { + dynamic_cast<MidiTimeAxisView*> (tv.first) != 0) { /* MIDI -> non-MIDI */ return true; diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index f01a7ca2ca..b9906eda5b 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -52,7 +52,6 @@ Drag::Drag (Editor* e, ArdourCanvas::Item* i) : _grab_frame (0), _last_pointer_frame (0), _current_pointer_frame (0), - _ending (false), _had_movement (false), _move_threshold_passed (false) { @@ -254,6 +253,7 @@ RegionDrag::region_going_away (RegionView* v) RegionMotionDrag::RegionMotionDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<RegionView*> const & v, bool b) : RegionDrag (e, i, p, v), + _dest_trackview (0), _dest_layer (0), _brushing (b) { @@ -280,7 +280,7 @@ RegionMotionDrag::get_time_axis_view_summary () /* get a bitmask representing the visible tracks */ for (Editor::TrackViewList::iterator i = _editor->track_views.begin(); i != _editor->track_views.end(); ++i) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); TimeAxisView::Children children_list; /* zeroes are audio/MIDI tracks. ones are other types. */ @@ -310,7 +310,7 @@ RegionMotionDrag::get_time_axis_view_summary () bool RegionMotionDrag::compute_y_delta ( - TimeAxisViewConstPtr last_pointer_view, TimeAxisViewPtr current_pointer_view, + TimeAxisView const * last_pointer_view, TimeAxisView* current_pointer_view, int32_t last_pointer_layer, int32_t current_pointer_layer, TimeAxisViewSummary const & tavs, int32_t* pointer_order_span, int32_t* pointer_layer_span, @@ -366,9 +366,9 @@ RegionMotionDrag::compute_y_delta ( iy1 += _editor->vertical_adjustment.get_value() - _editor->canvas_timebars_vsize; /* get the new trackview for this particular region */ - pair<TimeAxisViewPtr, int> const tvp = _editor->trackview_by_y_position (iy1); + pair<TimeAxisView*, int> const tvp = _editor->trackview_by_y_position (iy1); assert (tvp.first); - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tvp.first); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tvp.first); /* XXX: not sure that we should be passing canvas_pointer_order_span in here, as surely this is a per-region thing... */ @@ -495,14 +495,14 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) current_pointer_layer the current layer on that TimeAxisView; in this code layer numbers are with respect to how the view's layers are displayed; if we are in Overlaid mode, layer is always 0 regardless of what the region's "real" layer is */ - RouteTimeAxisViewPtr current_pointer_view; + RouteTimeAxisView* current_pointer_view; layer_t current_pointer_layer; if (!check_possible (¤t_pointer_view, ¤t_pointer_layer)) { return; } /* TimeAxisView that we were pointing at last time we entered this method */ - TimeAxisViewConstPtr const last_pointer_view = _dest_trackview; + TimeAxisView const * const last_pointer_view = _dest_trackview; /* the order of the track that we were pointing at last time we entered this method */ int32_t const last_pointer_order = last_pointer_view->order (); /* the layer that we were pointing at last time we entered this method */ @@ -542,7 +542,7 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) for (list<RegionView*>::const_iterator i = _views.begin(); i != _views.end(); ++i) { RegionView* rv = (*i); - + if (rv->region()->locked()) { continue; } @@ -573,7 +573,7 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) // hide any dependent views - rv->get_time_axis_view()->hide_dependent_views (*rv); + rv->get_time_axis_view().hide_dependent_views (*rv); /* reparent to a non scrolling group so that we can keep the @@ -589,8 +589,8 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) } /* current view for this particular region */ - pair<TimeAxisViewPtr, int> pos = _editor->trackview_by_y_position (iy1); - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (pos.first); + pair<TimeAxisView*, int> pos = _editor->trackview_by_y_position (iy1); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (pos.first); if (pointer_order_span != 0 && !clamp_y_axis) { @@ -671,8 +671,8 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) /* find out where we'll be when we move and set height accordingly */ - pair<TimeAxisViewPtr, int> const pos = _editor->trackview_by_y_position (iy1 + y_delta); - RouteTimeAxisViewConstPtr temp_rtv = boost::dynamic_pointer_cast<const RouteTimeAxisView> (pos.first); + pair<TimeAxisView*, int> const pos = _editor->trackview_by_y_position (iy1 + y_delta); + RouteTimeAxisView const * temp_rtv = dynamic_cast<RouteTimeAxisView*> (pos.first); rv->set_height (temp_rtv->view()->child_height()); /* if you un-comment the following, the region colours will follow @@ -734,8 +734,8 @@ RegionMoveDrag::finished (GdkEvent* event, bool movement_occurred) pair<PlaylistSet::iterator,bool> insert_result, frozen_insert_result; nframes64_t drag_delta; bool changed_tracks, changed_position; - map<RegionView*, RouteTimeAxisViewPtr> final; - RouteTimeAxisViewPtr source_tv; + map<RegionView*, RouteTimeAxisView*> final; + RouteTimeAxisView* source_tv; if (!movement_occurred) { /* just a click */ @@ -784,7 +784,7 @@ RegionMoveDrag::finished (GdkEvent* event, bool movement_occurred) } changed_position = (_last_frame_position != (nframes64_t) (_primary->region()->position())); - changed_tracks = (_dest_trackview != _primary->get_time_axis_view()); + changed_tracks = (_dest_trackview != &_primary->get_time_axis_view()); drag_delta = _primary->region()->position() - _last_frame_position; @@ -796,7 +796,7 @@ RegionMoveDrag::finished (GdkEvent* event, bool movement_occurred) for (list<RegionView*>::const_iterator i = _views.begin(); i != _views.end(); ) { RegionView* rv = (*i); - RouteTimeAxisViewPtr dest_rtv = final[*i]; + RouteTimeAxisView* dest_rtv = final[*i]; nframes64_t where; @@ -892,7 +892,7 @@ RegionMoveDrag::finished (GdkEvent* event, bool movement_occurred) because we may have copied the region and it has not been attached to a playlist. */ - assert ((source_tv = boost::dynamic_pointer_cast<RouteTimeAxisView> (rv->get_time_axis_view()))); + assert ((source_tv = dynamic_cast<RouteTimeAxisView*> (&rv->get_time_axis_view()))); assert ((ds = source_tv->get_diskstream())); assert ((from_playlist = ds->playlist())); @@ -1060,12 +1060,12 @@ RegionMotionDrag::copy_regions (GdkEvent* event) } bool -RegionMotionDrag::check_possible (RouteTimeAxisViewPtr* tv, layer_t* layer) +RegionMotionDrag::check_possible (RouteTimeAxisView** tv, layer_t* layer) { /* Which trackview is this ? */ - pair<TimeAxisViewPtr, int> const tvp = _editor->trackview_by_y_position (current_pointer_y ()); - (*tv) = boost::dynamic_pointer_cast<RouteTimeAxisView> (tvp.first); + pair<TimeAxisView*, int> const tvp = _editor->trackview_by_y_position (current_pointer_y ()); + (*tv) = dynamic_cast<RouteTimeAxisView*> (tvp.first); (*layer) = tvp.second; if (*tv && (*tv)->layer_display() == Overlaid) { @@ -1177,7 +1177,7 @@ RegionMoveDrag::RegionMoveDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, : RegionMotionDrag (e, i, p, v, b), _copy (c) { - TimeAxisViewPtr const tv = _primary->get_time_axis_view (); + TimeAxisView* const tv = &_primary->get_time_axis_view (); _dest_trackview = tv; if (tv->layer_display() == Overlaid) { @@ -1187,7 +1187,7 @@ RegionMoveDrag::RegionMoveDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, } double speed = 1; - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tv); if (rtv && rtv->is_track()) { speed = rtv->get_diskstream()->speed (); } @@ -1203,11 +1203,11 @@ RegionMoveDrag::start_grab (GdkEvent* event, Gdk::Cursor* c) _pointer_frame_offset = _grab_frame - _last_frame_position; } -RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr<Region> r, RouteTimeAxisViewPtr v, nframes64_t pos) +RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr<Region> r, RouteTimeAxisView* v, nframes64_t pos) : RegionMotionDrag (e, 0, 0, list<RegionView*> (), false) { - assert ((boost::dynamic_pointer_cast<AudioRegion> (r) && boost::dynamic_pointer_cast<AudioTimeAxisView> (v)) || - (boost::dynamic_pointer_cast<MidiRegion> (r) && boost::dynamic_pointer_cast<MidiTimeAxisView> (v))); + assert ((boost::dynamic_pointer_cast<AudioRegion> (r) && dynamic_cast<AudioTimeAxisView*> (v)) || + (boost::dynamic_pointer_cast<MidiRegion> (r) && dynamic_cast<MidiTimeAxisView*> (v))); _primary = v->view()->create_region_view (r, false, false); @@ -1222,10 +1222,10 @@ RegionInsertDrag::RegionInsertDrag (Editor* e, boost::shared_ptr<Region> r, Rout _dest_layer = _primary->region()->layer (); } -map<RegionView*, RouteTimeAxisViewPtr> +map<RegionView*, RouteTimeAxisView*> RegionMotionDrag::find_time_axis_views () { - map<RegionView*, RouteTimeAxisViewPtr> tav; + map<RegionView*, RouteTimeAxisView*> tav; for (list<RegionView*>::const_iterator i = _views.begin(); i != _views.end(); ++i) { @@ -1234,8 +1234,8 @@ RegionMotionDrag::find_time_axis_views () (*i)->get_canvas_frame()->i2w (ix1, iy1); iy1 += _editor->vertical_adjustment.get_value() - _editor->canvas_timebars_vsize; - pair<TimeAxisViewPtr, int> tv = _editor->trackview_by_y_position (iy1); - tav[*i] = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv.first); + pair<TimeAxisView*, int> tv = _editor->trackview_by_y_position (iy1); + tav[*i] = dynamic_cast<RouteTimeAxisView*> (tv.first); } return tav; @@ -1247,9 +1247,9 @@ RegionInsertDrag::finished (GdkEvent* event, bool movement_occurred) { _editor->update_canvas_now (); - map<RegionView*, RouteTimeAxisViewPtr> final = find_time_axis_views (); + map<RegionView*, RouteTimeAxisView*> final = find_time_axis_views (); - RouteTimeAxisViewPtr dest_rtv = final[_primary]; + RouteTimeAxisView* dest_rtv = final[_primary]; _primary->get_canvas_group()->reparent (*dest_rtv->view()->canvas_item()); _primary->get_canvas_group()->property_y() = 0; @@ -1282,7 +1282,7 @@ struct RegionSelectionByPosition { void RegionSpliceDrag::motion (GdkEvent* event, bool) { - RouteTimeAxisViewPtr tv; + RouteTimeAxisView* tv; layer_t layer; if (!check_possible (&tv, &layer)) { @@ -1304,7 +1304,7 @@ RegionSpliceDrag::motion (GdkEvent* event, bool) for (RegionSelection::iterator i = copy.begin(); i != copy.end(); ++i) { - RouteTimeAxisViewPtr atv = boost::dynamic_pointer_cast<RouteTimeAxisView> ((*i)->get_time_axis_view()); + RouteTimeAxisView* atv = dynamic_cast<RouteTimeAxisView*> (&(*i)->get_time_axis_view()); if (!atv) { continue; @@ -1344,7 +1344,7 @@ RegionSpliceDrag::finished (GdkEvent* event, bool) } -RegionCreateDrag::RegionCreateDrag (Editor* e, ArdourCanvas::Item* i, TimeAxisViewPtr v) +RegionCreateDrag::RegionCreateDrag (Editor* e, ArdourCanvas::Item* i, TimeAxisView* v) : Drag (e, i), _view (v) { @@ -1373,13 +1373,13 @@ RegionCreateDrag::motion (GdkEvent* event, bool first_move) void RegionCreateDrag::finished (GdkEvent* event, bool movement_occurred) { - MidiTimeAxisViewPtr mtv = boost::dynamic_pointer_cast<MidiTimeAxisView> (_dest_trackview); + MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*> (_dest_trackview); if (!mtv) { return; } const boost::shared_ptr<MidiDiskstream> diskstream = - boost::dynamic_pointer_cast<MidiDiskstream>(mtv->view()->trackview()->track()->diskstream()); + boost::dynamic_pointer_cast<MidiDiskstream>(mtv->view()->trackview().track()->diskstream()); if (!diskstream) { warning << "Cannot create non-MIDI region" << endl; @@ -1436,8 +1436,8 @@ void TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor *) { double speed = 1.0; - TimeAxisViewPtr tvp = _primary->get_time_axis_view (); - RouteTimeAxisViewPtr tv = boost::dynamic_pointer_cast<RouteTimeAxisView>(tvp); + TimeAxisView* tvp = &_primary->get_time_axis_view (); + RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp); if (tv && tv->is_track()) { speed = tv->get_diskstream()->speed(); @@ -1490,8 +1490,8 @@ TrimDrag::motion (GdkEvent* event, bool first_move) */ double speed = 1.0; - TimeAxisViewPtr tvp = _primary->get_time_axis_view (); - RouteTimeAxisViewPtr tv = boost::dynamic_pointer_cast<RouteTimeAxisView>(tvp); + TimeAxisView* tvp = &_primary->get_time_axis_view (); + RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp); pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result; if (tv && tv->is_track()) { @@ -2762,7 +2762,7 @@ TimeFXDrag::motion (GdkEvent* event, bool) } if (_current_pointer_frame > rv->region()->position()) { - rv->get_time_axis_view()->show_timestretch (rv->region()->position(), _current_pointer_frame); + rv->get_time_axis_view().show_timestretch (rv->region()->position(), _current_pointer_frame); } _last_pointer_frame = _current_pointer_frame; @@ -2773,7 +2773,7 @@ TimeFXDrag::motion (GdkEvent* event, bool) void TimeFXDrag::finished (GdkEvent* event, bool movement_occurred) { - _primary->get_time_axis_view()->hide_timestretch (); + _primary->get_time_axis_view().hide_timestretch (); if (!movement_occurred) { return; @@ -3240,7 +3240,7 @@ RangeMarkerBarDrag::finished (GdkEvent* event, bool movement_occurred) case MouseRange: /* find the two markers on either side of the click and make the range out of it */ - _editor->selection->set (TimeAxisViewPtr (), start, end); + _editor->selection->set (0, start, end); break; default: diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 35920a46a8..97e503f0d6 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -186,19 +186,19 @@ protected: void copy_regions (GdkEvent *); bool y_movement_disallowed (int, int, int, TimeAxisViewSummary const &) const; - std::map<RegionView*, RouteTimeAxisViewPtr> find_time_axis_views (); + std::map<RegionView*, RouteTimeAxisView*> find_time_axis_views (); double compute_x_delta (GdkEvent const *, nframes64_t *); bool compute_y_delta ( - TimeAxisViewConstPtr, TimeAxisViewPtr, int32_t, int32_t, TimeAxisViewSummary const &, + TimeAxisView const *, TimeAxisView*, int32_t, int32_t, TimeAxisViewSummary const &, int32_t *, int32_t *, int32_t * ); TimeAxisViewSummary get_time_axis_view_summary (); virtual bool x_move_allowed () const = 0; - TimeAxisViewPtr _dest_trackview; + TimeAxisView* _dest_trackview; ARDOUR::layer_t _dest_layer; - bool check_possible (RouteTimeAxisViewPtr *, ARDOUR::layer_t *); + bool check_possible (RouteTimeAxisView **, ARDOUR::layer_t *); bool _brushing; }; @@ -230,7 +230,7 @@ private: class RegionInsertDrag : public RegionMotionDrag { public: - RegionInsertDrag (Editor *, boost::shared_ptr<ARDOUR::Region>, RouteTimeAxisViewPtr, nframes64_t); + RegionInsertDrag (Editor *, boost::shared_ptr<ARDOUR::Region>, RouteTimeAxisView*, nframes64_t); void finished (GdkEvent *, bool); @@ -252,15 +252,15 @@ public: class RegionCreateDrag : public Drag { public: - RegionCreateDrag (Editor *, ArdourCanvas::Item *, TimeAxisViewPtr); + RegionCreateDrag (Editor *, ArdourCanvas::Item *, TimeAxisView *); void start_grab (GdkEvent *, Gdk::Cursor* c = 0); void motion (GdkEvent *, bool); void finished (GdkEvent *, bool); private: - TimeAxisViewPtr _view; - TimeAxisViewPtr _dest_trackview; + TimeAxisView* _view; + TimeAxisView* _dest_trackview; }; /** Drag of region gain */ diff --git a/gtk2_ardour/editor_export_audio.cc b/gtk2_ardour/editor_export_audio.cc index 33eecff6d2..ca73c4d8b0 100644 --- a/gtk2_ardour/editor_export_audio.cc +++ b/gtk2_ardour/editor_export_audio.cc @@ -99,8 +99,8 @@ Editor::export_region () boost::shared_ptr<Region> r = selection->regions.front()->region(); AudioRegion & region (dynamic_cast<AudioRegion &> (*r)); - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (selection->regions.front()->get_time_axis_view()); - AudioTrack & track (dynamic_cast<AudioTrack &> (*rtv->route())); + RouteTimeAxisView & rtv (dynamic_cast<RouteTimeAxisView &> (selection->regions.front()->get_time_axis_view())); + AudioTrack & track (dynamic_cast<AudioTrack &> (*rtv.route())); ExportRegionDialog dialog (*this, region, track); dialog.set_session (session); @@ -132,7 +132,7 @@ Editor::bounce_region_selection () for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { boost::shared_ptr<Region> region ((*i)->region()); - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView>((*i)->get_time_axis_view()); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&(*i)->get_time_axis_view()); Track* track = dynamic_cast<Track*>(rtv->route().get()); InterThreadInfo itt; @@ -280,9 +280,9 @@ Editor::write_audio_selection (TimeSelection& ts) for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { - AudioTimeAxisViewPtr atv; + AudioTimeAxisView* atv; - if ((atv = boost::dynamic_pointer_cast<AudioTimeAxisView>(*i)) == 0) { + if ((atv = dynamic_cast<AudioTimeAxisView*>(*i)) == 0) { continue; } diff --git a/gtk2_ardour/editor_group_tabs.cc b/gtk2_ardour/editor_group_tabs.cc index a4f6e3b95c..7007c37a05 100644 --- a/gtk2_ardour/editor_group_tabs.cc +++ b/gtk2_ardour/editor_group_tabs.cc @@ -124,7 +124,7 @@ EditorGroupTabs::reflect_tabs (list<Tab> const & tabs) continue; } - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); if (rtv) { if (j == tabs.end()) { diff --git a/gtk2_ardour/editor_keys.cc b/gtk2_ardour/editor_keys.cc index 03a025743c..1826ee464d 100644 --- a/gtk2_ardour/editor_keys.cc +++ b/gtk2_ardour/editor_keys.cc @@ -58,7 +58,7 @@ Editor::keyboard_selection_finish (bool add) if (add) { selection->add (pending_keyboard_selection_start, end); } else { - selection->set (TimeAxisViewPtr (), pending_keyboard_selection_start, end); + selection->set (0, pending_keyboard_selection_start, end); } have_pending_keyboard_selection = false; diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc index c7fc927653..46b05a20f4 100644 --- a/gtk2_ardour/editor_mixer.cc +++ b/gtk2_ardour/editor_mixer.cc @@ -89,9 +89,9 @@ Editor::show_editor_mixer (bool yn) } for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - RouteTimeAxisViewPtr atv; + RouteTimeAxisView* atv; - if ((atv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i)) != 0) { + if ((atv = dynamic_cast<RouteTimeAxisView*> (*i)) != 0) { r = atv->route(); break; } @@ -101,9 +101,9 @@ Editor::show_editor_mixer (bool yn) sort_track_selection (); for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { - RouteTimeAxisViewPtr atv; + RouteTimeAxisView* atv; - if ((atv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i)) != 0) { + if ((atv = dynamic_cast<RouteTimeAxisView*> (*i)) != 0) { r = atv->route(); break; } @@ -183,12 +183,12 @@ Editor::create_editor_mixer () } void -Editor::set_selected_mixer_strip (TimeAxisViewPtr view) +Editor::set_selected_mixer_strip (TimeAxisView& view) { - RouteTimeAxisViewPtr at; + RouteTimeAxisView* at; bool created; - if (!session || (at = boost::dynamic_pointer_cast<RouteTimeAxisView> (view)) == 0) { + if (!session || (at = dynamic_cast<RouteTimeAxisView*>(&view)) == 0) { return; } @@ -323,9 +323,9 @@ Editor::current_mixer_strip_hidden () { for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - RouteTimeAxisViewPtr tmp; + RouteTimeAxisView* tmp; - if ((tmp = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i)) != 0) { + if ((tmp = dynamic_cast<RouteTimeAxisView*>(*i)) != 0) { if (tmp->route() == current_mixer_strip->route()) { (*i)->set_selected (false); break; @@ -354,11 +354,11 @@ Editor::session_going_away () cut_buffer->clear (); clicked_regionview = 0; - clicked_axisview.reset (); - clicked_routeview.reset (); + clicked_axisview = 0; + clicked_routeview = 0; clicked_crossfadeview = 0; entered_regionview = 0; - entered_track.reset (); + entered_track = 0; last_update_frame = 0; _drag = 0; diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 36f0d26691..e132d794ed 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -1104,7 +1104,7 @@ bool Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type) { nframes64_t where = event_frame (event, 0, 0); - AutomationTimeAxisViewPtr atv; + AutomationTimeAxisView* atv = 0; /* no action if we're recording */ @@ -1338,7 +1338,7 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT case MouseObject: switch (item_type) { case AutomationTrackItem: - atv = boost::dynamic_pointer_cast<AutomationTimeAxisView>(clicked_axisview); + atv = dynamic_cast<AutomationTimeAxisView*>(clicked_axisview); if (atv) { atv->add_automation_event (item, event, where, event->button.y); } @@ -1371,7 +1371,7 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT break; case AutomationTrackItem: - boost::dynamic_pointer_cast<AutomationTimeAxisView> (clicked_axisview)-> + dynamic_cast<AutomationTimeAxisView*>(clicked_axisview)-> add_automation_event (item, event, where, event->button.y); return true; break; @@ -1575,13 +1575,8 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_ track_canvas->get_window()->set_cursor (*cursor); - AutomationTimeAxisViewPtr atv = boost::dynamic_pointer_cast<AutomationTimeAxisView> ( - find_time_axis ( - static_cast<TimeAxisView*> (item->get_data ("trackview")) - ) - ); - - if (atv) { + AutomationTimeAxisView* atv; + if ((atv = static_cast<AutomationTimeAxisView*>(item->get_data ("trackview"))) != 0) { clear_entered_track = false; set_entered_track (atv); } @@ -1643,7 +1638,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_ break; default: - set_entered_track (TimeAxisViewPtr ()); + set_entered_track (0); break; } @@ -1775,7 +1770,7 @@ gint Editor::left_automation_track () { if (clear_entered_track) { - set_entered_track (TimeAxisViewPtr ()); + set_entered_track (0); clear_entered_track = false; } return false; @@ -1880,7 +1875,7 @@ Editor::motion_handler (ArdourCanvas::Item* item, GdkEvent* event, bool from_aut if (current_stepping_trackview) { /* don't keep the persistent stepped trackview if the mouse moves */ - current_stepping_trackview.reset (); + current_stepping_trackview = 0; step_timeout.disconnect (); } @@ -1964,7 +1959,7 @@ Editor::visible_order_range (int* low, int* high) const for (TrackViewList::const_iterator i = track_views.begin(); i != track_views.end(); ++i) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); if (!rtv->hidden()) { @@ -1987,8 +1982,8 @@ Editor::region_view_item_click (AudioRegionView& rv, GdkEventButton* event) */ if (Keyboard::modifier_state_contains (event->state, Keyboard::PrimaryModifier)) { - TimeAxisViewPtr tv = rv.get_time_axis_view(); - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv); + TimeAxisView* tv = &rv.get_time_axis_view(); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(tv); double speed = 1.0; if (rtv && rtv->is_track()) { speed = rtv->get_diskstream()->speed(); @@ -2192,8 +2187,8 @@ Editor::single_contents_trim (RegionView& rv, nframes64_t frame_delta, bool left nframes64_t new_bound; double speed = 1.0; - TimeAxisViewPtr tvp = clicked_axisview; - RouteTimeAxisViewPtr tv = boost::dynamic_pointer_cast<RouteTimeAxisView>(tvp); + TimeAxisView* tvp = clicked_axisview; + RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp); if (tv && tv->is_track()) { speed = tv->get_diskstream()->speed(); @@ -2232,8 +2227,8 @@ Editor::single_start_trim (RegionView& rv, nframes64_t frame_delta, bool left_di nframes64_t new_bound; double speed = 1.0; - TimeAxisViewPtr tvp = clicked_axisview; - RouteTimeAxisViewPtr tv = boost::dynamic_pointer_cast<RouteTimeAxisView>(tvp); + TimeAxisView* tvp = clicked_axisview; + RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp); if (tv && tv->is_track()) { speed = tv->get_diskstream()->speed(); @@ -2289,8 +2284,8 @@ Editor::single_end_trim (RegionView& rv, nframes64_t frame_delta, bool left_dire nframes64_t new_bound; double speed = 1.0; - TimeAxisViewPtr tvp = clicked_axisview; - RouteTimeAxisViewPtr tv = boost::dynamic_pointer_cast<RouteTimeAxisView>(tvp); + TimeAxisView* tvp = clicked_axisview; + RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp); if (tv && tv->is_track()) { speed = tv->get_diskstream()->speed(); @@ -2518,7 +2513,7 @@ Editor::mouse_brush_insert_region (RegionView* rv, nframes64_t pos) return; } - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (rv->get_time_axis_view()); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&rv->get_time_axis_view()); if (rtv == 0 || !rtv->is_track()) { return; @@ -2541,7 +2536,7 @@ gint Editor::track_height_step_timeout () { if (get_microseconds() - last_track_height_step_timestamp < 250000) { - current_stepping_trackview.reset (); + current_stepping_trackview = 0; return false; } return true; diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index f75a015180..0570a43648 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -198,7 +198,7 @@ Editor::split_regions_at (nframes64_t where, RegionSelection& regions) } boost::shared_ptr<Region> -Editor::select_region_for_operation (int dir, TimeAxisViewPtr *tv) +Editor::select_region_for_operation (int dir, TimeAxisView **tv) { RegionView* rv; boost::shared_ptr<Region> region; @@ -217,16 +217,16 @@ Editor::select_region_for_operation (int dir, TimeAxisViewPtr *tv) if (!selection->regions.empty()) { rv = *(selection->regions.begin()); - (*tv) = rv->get_time_axis_view(); + (*tv) = &rv->get_time_axis_view(); region = rv->region(); } else if (!selection->tracks.empty()) { (*tv) = selection->tracks.front(); - RouteTimeAxisViewPtr rtv; + RouteTimeAxisView* rtv; - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*tv)) != 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*> (*tv)) != 0) { boost::shared_ptr<Playlist> pl; if ((pl = rtv->playlist()) == 0) { @@ -243,7 +243,7 @@ Editor::select_region_for_operation (int dir, TimeAxisViewPtr *tv) void Editor::extend_selection_to_end_of_region (bool next) { - TimeAxisViewPtr tv; + TimeAxisView *tv; boost::shared_ptr<Region> region; nframes64_t start; @@ -271,7 +271,7 @@ Editor::extend_selection_to_end_of_region (bool next) void Editor::extend_selection_to_start_of_region (bool previous) { - TimeAxisViewPtr tv; + TimeAxisView *tv; boost::shared_ptr<Region> region; nframes64_t end; @@ -608,7 +608,7 @@ Editor::build_region_boundary_cache () return; } - TimeAxisViewPtr ontrack; + TimeAxisView *ontrack = 0; TrackViewList tlist; if (!selection->tracks.empty()) { @@ -651,9 +651,9 @@ Editor::build_region_boundary_cache () } float speed = 1.0f; - RouteTimeAxisViewPtr rtav; + RouteTimeAxisView *rtav; - if (ontrack != 0 && (rtav = boost::dynamic_pointer_cast<RouteTimeAxisView>(ontrack)) != 0 ) { + if (ontrack != 0 && (rtav = dynamic_cast<RouteTimeAxisView*>(ontrack)) != 0 ) { if (rtav->get_diskstream() != 0) { speed = rtav->get_diskstream()->speed(); } @@ -691,7 +691,7 @@ Editor::build_region_boundary_cache () } boost::shared_ptr<Region> -Editor::find_next_region (nframes64_t frame, RegionPoint point, int32_t dir, TrackViewList& tracks, TimeAxisViewPtr *ontrack) +Editor::find_next_region (nframes64_t frame, RegionPoint point, int32_t dir, TrackViewList& tracks, TimeAxisView **ontrack) { TrackViewList::iterator i; nframes64_t closest = max_frames; @@ -700,7 +700,7 @@ Editor::find_next_region (nframes64_t frame, RegionPoint point, int32_t dir, Tra float track_speed; nframes64_t track_frame; - RouteTimeAxisViewPtr rtav; + RouteTimeAxisView *rtav; for (i = tracks.begin(); i != tracks.end(); ++i) { @@ -708,7 +708,7 @@ Editor::find_next_region (nframes64_t frame, RegionPoint point, int32_t dir, Tra boost::shared_ptr<Region> r; track_speed = 1.0f; - if ( (rtav = boost::dynamic_pointer_cast<RouteTimeAxisView>(*i)) != 0 ) { + if ( (rtav = dynamic_cast<RouteTimeAxisView*>(*i)) != 0 ) { if (rtav->get_diskstream()!=0) track_speed = rtav->get_diskstream()->speed(); } @@ -765,7 +765,7 @@ Editor::find_next_region_boundary (nframes64_t pos, int32_t dir, const TrackView nframes64_t contender; nframes64_t d; - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); if (!rtv) { continue; @@ -866,7 +866,7 @@ Editor::cursor_to_region_point (EditorCursor* cursor, RegionPoint point, int32_t return; } - TimeAxisViewPtr ontrack; + TimeAxisView *ontrack = 0; // so we don't find the current region again.. if (dir>0 || pos>0) @@ -908,9 +908,9 @@ Editor::cursor_to_region_point (EditorCursor* cursor, RegionPoint point, int32_t } float speed = 1.0f; - RouteTimeAxisViewPtr rtav; + RouteTimeAxisView *rtav; - if ( ontrack != 0 && (rtav = boost::dynamic_pointer_cast<RouteTimeAxisView>(ontrack)) != 0 ) { + if ( ontrack != 0 && (rtav = dynamic_cast<RouteTimeAxisView*>(ontrack)) != 0 ) { if (rtav->get_diskstream() != 0) { speed = rtav->get_diskstream()->speed(); } @@ -1069,7 +1069,7 @@ Editor::selected_marker_to_region_point (RegionPoint point, int32_t dir) return; } - TimeAxisViewPtr ontrack; + TimeAxisView *ontrack = 0; pos = loc->start(); @@ -1105,9 +1105,9 @@ Editor::selected_marker_to_region_point (RegionPoint point, int32_t dir) } float speed = 1.0f; - RouteTimeAxisViewPtr rtav; + RouteTimeAxisView *rtav; - if (ontrack != 0 && (rtav = boost::dynamic_pointer_cast<RouteTimeAxisView>(ontrack)) != 0) { + if (ontrack != 0 && (rtav = dynamic_cast<RouteTimeAxisView*>(ontrack)) != 0) { if (rtav->get_diskstream() != 0) { speed = rtav->get_diskstream()->speed(); } @@ -1673,7 +1673,7 @@ Editor::temporal_zoom_region (bool both_axes) nframes64_t start = max_frames; nframes64_t end = 0; RegionSelection rs; - set<TimeAxisViewPtr> tracks; + set<TimeAxisView*> tracks; get_regions_for_action (rs); @@ -1691,7 +1691,7 @@ Editor::temporal_zoom_region (bool both_axes) end = (*i)->region()->last_frame() + 1; } - tracks.insert ((*i)->get_time_axis_view()); + tracks.insert (&((*i)->get_time_axis_view())); } /* now comes an "interesting" hack ... make sure we leave a little space @@ -1740,7 +1740,7 @@ Editor::temporal_zoom_region (bool both_axes) /* set visible track heights appropriately */ - for (set<TimeAxisViewPtr>::iterator t = tracks.begin(); t != tracks.end(); ++t) { + for (set<TimeAxisView*>::iterator t = tracks.begin(); t != tracks.end(); ++t) { (*t)->set_height (per_track_height); } @@ -1750,7 +1750,7 @@ Editor::temporal_zoom_region (bool both_axes) for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { if (find (tracks.begin(), tracks.end(), (*i)) == tracks.end()) { - hide_track_in_display (*i, true); + hide_track_in_display (**i, true); } } @@ -2209,7 +2209,7 @@ Editor::insert_region_list_drag (boost::shared_ptr<Region> region, int x, int y) double wx, wy; double cx, cy; nframes64_t where; - RouteTimeAxisViewPtr rtv; + RouteTimeAxisView *rtv = 0; boost::shared_ptr<Playlist> playlist; track_canvas->window_to_world (x, y, wx, wy); @@ -2228,12 +2228,12 @@ Editor::insert_region_list_drag (boost::shared_ptr<Region> region, int x, int y) return; } - std::pair<TimeAxisViewPtr, int> tv = trackview_by_y_position (cy); + std::pair<TimeAxisView*, int> tv = trackview_by_y_position (cy); if (tv.first == 0) { return; } - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv.first)) == 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*> (tv.first)) == 0) { return; } @@ -2255,8 +2255,8 @@ Editor::insert_route_list_drag (boost::shared_ptr<Route> route, int x, int y) { double wx, wy; double cx, cy; nframes_t where; - RouteTimeAxisViewPtr dest_rtv; - RouteTimeAxisViewPtr source_rtv; + RouteTimeAxisView *dest_rtv = 0; + RouteTimeAxisView *source_rtv = 0; track_canvas->window_to_world (x, y, wx, wy); wx += horizontal_adjustment.get_value(); @@ -2269,19 +2269,19 @@ Editor::insert_route_list_drag (boost::shared_ptr<Route> route, int x, int y) { where = event_frame (&event, &cx, &cy); - std::pair<TimeAxisViewPtr, int> const tv = trackview_by_y_position (cy); + std::pair<TimeAxisView*, int> const tv = trackview_by_y_position (cy); if (tv.first == 0) { return; } - if ((dest_rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv.first)) == 0) { + if ((dest_rtv = dynamic_cast<RouteTimeAxisView*> (tv.first)) == 0) { return; } /* use this drag source to add underlay to a track. But we really don't care about the Route, only the view of the route, so find it first */ for(TrackViewList::iterator it = track_views.begin(); it != track_views.end(); ++it) { - if((source_rtv = boost::dynamic_pointer_cast<RouteTimeAxisView>(*it)) == 0) { + if((source_rtv = dynamic_cast<RouteTimeAxisView*>(*it)) == 0) { continue; } @@ -2295,17 +2295,17 @@ Editor::insert_route_list_drag (boost::shared_ptr<Route> route, int x, int y) { void Editor::insert_region_list_selection (float times) { - RouteTimeAxisViewPtr tv; + RouteTimeAxisView *tv = 0; boost::shared_ptr<Playlist> playlist; if (clicked_routeview != 0) { tv = clicked_routeview; } else if (!selection->tracks.empty()) { - if ((tv = boost::dynamic_pointer_cast<RouteTimeAxisView>(selection->tracks.front())) == 0) { + if ((tv = dynamic_cast<RouteTimeAxisView*>(selection->tracks.front())) == 0) { return; } } else if (entered_track != 0) { - if ((tv = boost::dynamic_pointer_cast<RouteTimeAxisView>(entered_track)) == 0) { + if ((tv = dynamic_cast<RouteTimeAxisView*>(entered_track)) == 0) { return; } } else { @@ -2803,7 +2803,7 @@ Editor::separate_regions_between (const TimeSelection& ts) get_regions_for_action (rs); for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { - TimeAxisViewPtr tv = (*i)->get_time_axis_view(); + TimeAxisView* tv = &(*i)->get_time_axis_view(); if (find (tmptracks.begin(), tmptracks.end(), tv) == tmptracks.end()) { tmptracks.push_back (tv); @@ -2825,9 +2825,9 @@ Editor::separate_regions_between (const TimeSelection& ts) for (TrackSelection::iterator i = tmptracks.begin(); i != tmptracks.end(); ++i) { - RouteTimeAxisViewPtr rtv; + RouteTimeAxisView* rtv; - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> ((*i))) != 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*> ((*i))) != 0) { if (rtv->is_track()) { @@ -2991,9 +2991,9 @@ Editor::crop_region_to (nframes64_t start, nframes64_t end) for (TrackSelection::iterator i = ts->begin(); i != ts->end(); ++i) { - RouteTimeAxisViewPtr rtv; + RouteTimeAxisView* rtv; - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> ((*i))) != 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*> ((*i))) != 0) { boost::shared_ptr<Track> t = rtv->track(); @@ -3473,7 +3473,7 @@ Editor::trim_region_to_location (const Location& loc, const char* str) continue; } - RouteTimeAxisViewPtr tav = boost::dynamic_pointer_cast<RouteTimeAxisView> (rv->get_time_axis_view()); + RouteTimeAxisView* tav = dynamic_cast<RouteTimeAxisView*> (&rv->get_time_axis_view()); if (!tav) { return; } @@ -3518,7 +3518,7 @@ Editor::trim_region_to_edit_point () continue; } - RouteTimeAxisViewPtr tav = boost::dynamic_pointer_cast<RouteTimeAxisView> (rv->get_time_axis_view()); + RouteTimeAxisView* tav = dynamic_cast<RouteTimeAxisView*> (&rv->get_time_axis_view()); if (!tav) { return; } @@ -3558,7 +3558,7 @@ Editor::trim_region_from_edit_point () continue; } - RouteTimeAxisViewPtr tav = boost::dynamic_pointer_cast<RouteTimeAxisView> (rv->get_time_axis_view()); + RouteTimeAxisView* tav = dynamic_cast<RouteTimeAxisView*> (&rv->get_time_axis_view()); if (!tav) { return; } @@ -3610,7 +3610,7 @@ Editor::trim_to_region(bool forward) continue; } - AudioTimeAxisViewPtr atav = boost::dynamic_pointer_cast<AudioTimeAxisView> (arv->get_time_axis_view()); + AudioTimeAxisView* atav = dynamic_cast<AudioTimeAxisView*> (&arv->get_time_axis_view()); if (!atav) { return; @@ -3757,9 +3757,9 @@ Editor::bounce_range_selection (bool replace, bool enable_processing) for (TrackViewList::iterator i = views.begin(); i != views.end(); ++i) { - RouteTimeAxisViewPtr rtv; + RouteTimeAxisView* rtv; - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i)) == 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*> (*i)) == 0) { continue; } @@ -3934,7 +3934,7 @@ Editor::cut_copy (CutCopyOp op) if (!get_edit_op_range (start, end)) { return; } - selection->set (TimeAxisViewPtr (), start, end); + selection->set ((TimeAxisView*) 0, start, end); } begin_reversible_command (opname + _(" range")); @@ -3967,7 +3967,7 @@ Editor::cut_copy_points (CutCopyOp op) { for (PointSelection::iterator i = selection->points.begin(); i != selection->points.end(); ++i) { - AutomationTimeAxisViewPtr atv = boost::dynamic_pointer_cast<AutomationTimeAxisView>(i->track); + AutomationTimeAxisView* atv = dynamic_cast<AutomationTimeAxisView*>(&(*i).track); if (atv) { atv->cut_copy_clear_objects (selection->points, op); @@ -3987,10 +3987,10 @@ struct lt_playlist { }; struct PlaylistMapping { - TimeAxisViewPtr tv; + TimeAxisView* tv; boost::shared_ptr<Playlist> pl; - PlaylistMapping (TimeAxisViewPtr tvp) : tv (tvp) {} + PlaylistMapping (TimeAxisView* tvp) : tv (tvp) {} }; /** Remove `clicked_regionview' */ @@ -4135,7 +4135,7 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs) } } - TimeAxisViewPtr tv = (*x)->get_trackview(); + TimeAxisView* tv = &(*x)->get_trackview(); vector<PlaylistMapping>::iterator z; for (z = pmap.begin(); z != pmap.end(); ++z) { @@ -4158,7 +4158,7 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs) continue; } - TimeAxisViewPtr tv = (*x)->get_trackview(); + TimeAxisView& tv = (*x)->get_trackview(); boost::shared_ptr<Playlist> npl; RegionSelection::iterator tmp; @@ -4168,7 +4168,7 @@ Editor::cut_copy_regions (CutCopyOp op, RegionSelection& rs) vector<PlaylistMapping>::iterator z; for (z = pmap.begin(); z != pmap.end(); ++z) { - if (z->tv == tv) { + if ((*z).tv == &tv) { break; } } @@ -4337,11 +4337,11 @@ Editor::paste_named_selection (float times) for (t = selection->tracks.begin(); t != selection->tracks.end(); ++t) { - RouteTimeAxisViewPtr rtv; + RouteTimeAxisView* rtv; boost::shared_ptr<Playlist> pl; boost::shared_ptr<AudioPlaylist> apl; - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*t)) == 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*> (*t)) == 0) { continue; } @@ -4383,8 +4383,8 @@ Editor::duplicate_some_regions (RegionSelection& regions, float times) boost::shared_ptr<Region> r ((*i)->region()); - TimeAxisViewPtr tv = (*i)->get_time_axis_view(); - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv); + TimeAxisView& tv = (*i)->get_time_axis_view(); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (&tv); latest_regionviews.clear (); sigc::connection c = rtv->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view)); @@ -4451,7 +4451,7 @@ Editor::reset_point_selection () for (PointSelection::iterator i = selection->points.begin(); i != selection->points.end(); ++i) { - AutomationTimeAxisViewPtr atv = boost::dynamic_pointer_cast<AutomationTimeAxisView> (i->track); + AutomationTimeAxisView* atv = dynamic_cast<AutomationTimeAxisView*>(&(*i).track); if (atv) { atv->reset_objects (selection->points); @@ -5033,7 +5033,7 @@ Editor::toggle_record_enable () bool new_state = false; bool first = true; for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) { - RouteTimeAxisViewPtr rtav = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); + RouteTimeAxisView *rtav = dynamic_cast<RouteTimeAxisView *>(*i); if (!rtav) continue; if (!rtav->is_track()) @@ -5357,7 +5357,7 @@ Editor::update_region_fade_visibility () bool _fade_visibility = session->config.get_show_region_fades (); for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - AudioTimeAxisViewPtr v = boost::dynamic_pointer_cast<AudioTimeAxisView> (*i); + AudioTimeAxisView* v = dynamic_cast<AudioTimeAxisView*>(*i); if (v) { if (_fade_visibility) { v->audio_view()->show_all_fades (); @@ -5375,7 +5375,7 @@ Editor::update_xfade_visibility () _xfade_visibility = session->config.get_xfades_visible (); for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - AudioTimeAxisViewPtr v = boost::dynamic_pointer_cast<AudioTimeAxisView> (*i); + AudioTimeAxisView* v = dynamic_cast<AudioTimeAxisView*>(*i); if (v) { if (_xfade_visibility) { v->show_all_xfades (); @@ -5483,9 +5483,9 @@ Editor::select_next_route() return; } - TimeAxisViewPtr current = selection->tracks.front(); + TimeAxisView* current = selection->tracks.front(); - boost::shared_ptr<RouteUI> rui; + RouteUI *rui; do { for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { if (*i == current) { @@ -5499,8 +5499,8 @@ Editor::select_next_route() break; } } - rui = boost::dynamic_pointer_cast<RouteUI> (current); - } while ( current->hidden() || (rui && !rui->route()->active())); + rui = dynamic_cast<RouteUI *>(current); + } while ( current->hidden() || (rui != NULL && !rui->route()->active())); selection->set(current); @@ -5515,9 +5515,9 @@ Editor::select_prev_route() return; } - TimeAxisViewPtr current = selection->tracks.front(); + TimeAxisView* current = selection->tracks.front(); - boost::shared_ptr<RouteUI> rui; + RouteUI *rui; do { for (TrackViewList::reverse_iterator i = track_views.rbegin(); i != track_views.rend(); ++i) { if (*i == current) { @@ -5530,8 +5530,8 @@ Editor::select_prev_route() break; } } - rui = boost::dynamic_pointer_cast<RouteUI> (current); - } while ( current->hidden() || (rui && !rui->route()->active())); + rui = dynamic_cast<RouteUI *>(current); + } while ( current->hidden() || (rui != NULL && !rui->route()->active())); selection->set (current); @@ -5539,7 +5539,7 @@ Editor::select_prev_route() } void -Editor::ensure_track_visible(TimeAxisViewPtr track) +Editor::ensure_track_visible(TimeAxisView *track) { if (track->hidden()) return; @@ -6002,7 +6002,7 @@ Editor::tab_to_transient (bool forward) for (TrackSelection::iterator t = selection->tracks.begin(); t != selection->tracks.end(); ++t) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*t); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*t); if (rtv) { boost::shared_ptr<Diskstream> ds = rtv->get_diskstream(); @@ -6110,7 +6110,7 @@ Editor::toggle_tracks_active () } for (TrackSelection::iterator x = ts.begin(); x != ts.end(); ++x) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView>(*x); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(*x); if (rtv) { if (first) { @@ -6140,7 +6140,7 @@ Editor::remove_tracks () vector<boost::shared_ptr<Route> > routes; for (TrackSelection::iterator x = ts.begin(); x != ts.end(); ++x) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*x); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*x); if (rtv) { if (rtv->is_track()) { ntracks++; @@ -6313,7 +6313,7 @@ Editor::insert_time (nframes64_t pos, nframes64_t frames, InsertTimeOption opt, } /* automation */ - RouteTimeAxisViewPtr rtav = boost::dynamic_pointer_cast<RouteTimeAxisView> (*x); + RouteTimeAxisView* rtav = dynamic_cast<RouteTimeAxisView*> (*x); if (rtav) { rtav->route ()->shift (pos, frames); commit = true; @@ -6413,7 +6413,7 @@ Editor::fit_tracks (TrackSelection & tracks) first_y_pos = std::min ((*t)->y_position (), first_y_pos); } else { if (prev_was_selected && next_is_selected) { - hide_track_in_display (*t); + hide_track_in_display (**t); } } diff --git a/gtk2_ardour/editor_route_groups.cc b/gtk2_ardour/editor_route_groups.cc index ecb4efc055..690ad42eae 100644 --- a/gtk2_ardour/editor_route_groups.cc +++ b/gtk2_ardour/editor_route_groups.cc @@ -267,7 +267,7 @@ EditorRouteGroups::new_from_selection () _session->add_route_group (g); for (TrackSelection::iterator i = _editor->get_selection().tracks.begin(); i != _editor->get_selection().tracks.end(); ++i) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); if (rtv) { rtv->route()->set_route_group (g, this); } @@ -295,7 +295,7 @@ EditorRouteGroups::new_from_rec_enabled () _session->add_route_group (g); for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); if (rtv && rtv->route()->record_enabled()) { rtv->route()->set_route_group (g, this); } @@ -323,7 +323,7 @@ EditorRouteGroups::new_from_soloed () _session->add_route_group (g); for (Editor::TrackViewList::const_iterator i = _editor->get_track_views().begin(); i != _editor->get_track_views().end(); ++i) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i); if (rtv && !rtv->route()->is_master() && rtv->route()->soloed()) { rtv->route()->set_route_group (g, this); } @@ -517,13 +517,13 @@ EditorRouteGroups::row_change (const Gtk::TreeModel::Path& path,const Gtk::TreeM if ((*iter)[_columns.is_visible]) { for (Editor::TrackViewList::const_iterator j = _editor->get_track_views().begin(); j != _editor->get_track_views().end(); ++j) { if ((*j)->route_group() == group) { - _editor->_routes->show_track_in_display (*j); + _editor->_routes->show_track_in_display (**j); } } } else { for (Editor::TrackViewList::const_iterator j = _editor->get_track_views().begin(); j != _editor->get_track_views().end(); ++j) { if ((*j)->route_group() == group) { - _editor->hide_track_in_display (*j); + _editor->hide_track_in_display (**j); } } } @@ -689,7 +689,7 @@ EditorRouteGroups::collect (RouteGroup* g) int coll = -1; while (i != routes.end() && j != _editor->get_track_views().end()) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*j); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*j); if (rtv) { boost::shared_ptr<Route> r = rtv->route (); diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc index e3f3c9d736..46fd4548b3 100644 --- a/gtk2_ardour/editor_routes.cc +++ b/gtk2_ardour/editor_routes.cc @@ -122,8 +122,8 @@ EditorRoutes::on_tv_rec_enable_toggled (Glib::ustring const & path_string) // Get the model row that has been toggled. Gtk::TreeModel::Row row = *_model->get_iter (Gtk::TreeModel::Path (path_string)); - TimeAxisViewPtr tv = row[_columns.tv]; - AudioTimeAxisViewPtr atv = boost::dynamic_pointer_cast<AudioTimeAxisView> (tv); + TimeAxisView *tv = row[_columns.tv]; + AudioTimeAxisView *atv = dynamic_cast<AudioTimeAxisView*> (tv); if (atv != 0 && atv->is_audio_track()){ atv->get_diskstream()->set_record_enabled(!atv->get_diskstream()->record_enabled()); @@ -173,7 +173,7 @@ EditorRoutes::redisplay () } for (n = 0, position = 0, i = rows.begin(); i != rows.end(); ++i) { - TimeAxisViewPtr tv = (*i)[_columns.tv]; + TimeAxisView *tv = (*i)[_columns.tv]; boost::shared_ptr<Route> route = (*i)[_columns.route]; if (tv == 0) { @@ -192,7 +192,7 @@ EditorRoutes::redisplay () bool visible = (*i)[_columns.visible]; - /* show or hide the TimeAxisViewPtr */ + /* show or hide the TimeAxisView */ if (visible) { tv->set_marked_for_display (true); position += tv->show_at (position, n, &_editor->edit_controls_vbox); @@ -250,14 +250,14 @@ EditorRoutes::changed (Gtk::TreeModel::Path const & path, Gtk::TreeModel::iterat } void -EditorRoutes::routes_added (list<RouteTimeAxisViewPtr> routes) +EditorRoutes::routes_added (list<RouteTimeAxisView*> routes) { TreeModel::Row row; _redisplay_does_not_sync_order_keys = true; suspend_redisplay (); - for (list<RouteTimeAxisViewPtr>::iterator x = routes.begin(); x != routes.end(); ++x) { + for (list<RouteTimeAxisView*>::iterator x = routes.begin(); x != routes.end(); ++x) { row = *(_model->append ()); @@ -310,7 +310,7 @@ EditorRoutes::handle_gui_changes (string const & what, void *src) } void -EditorRoutes::route_removed (TimeAxisViewPtr tv) +EditorRoutes::route_removed (TimeAxisView *tv) { ENSURE_GUI_THREAD (bind (mem_fun(*this, &EditorRoutes::route_removed), tv)); @@ -324,8 +324,7 @@ EditorRoutes::route_removed (TimeAxisViewPtr tv) _redisplay_does_not_sync_order_keys = true; for (ri = rows.begin(); ri != rows.end(); ++ri) { - TimeAxisViewPtr t = (*ri)[_columns.tv]; - if (t == tv) { + if ((*ri)[_columns.tv] == tv) { _model->erase (ri); break; } @@ -365,7 +364,7 @@ EditorRoutes::update_visibility () suspend_redisplay (); for (i = rows.begin(); i != rows.end(); ++i) { - TimeAxisViewPtr tv = (*i)[_columns.tv]; + TimeAxisView *tv = (*i)[_columns.tv]; (*i)[_columns.visible] = tv->marked_for_display (); cerr << "marked " << tv->name() << " for display = " << tv->marked_for_display() << endl; } @@ -374,14 +373,13 @@ EditorRoutes::update_visibility () } void -EditorRoutes::hide_track_in_display (TimeAxisViewPtr tv) +EditorRoutes::hide_track_in_display (TimeAxisView& tv) { TreeModel::Children rows = _model->children(); TreeModel::Children::iterator i; for (i = rows.begin(); i != rows.end(); ++i) { - TimeAxisViewPtr t = (*i)[_columns.tv]; - if (t == tv) { + if ((*i)[_columns.tv] == &tv) { (*i)[_columns.visible] = false; break; } @@ -389,14 +387,13 @@ EditorRoutes::hide_track_in_display (TimeAxisViewPtr tv) } void -EditorRoutes::show_track_in_display (TimeAxisViewPtr tv) +EditorRoutes::show_track_in_display (TimeAxisView& tv) { TreeModel::Children rows = _model->children(); TreeModel::Children::iterator i; for (i = rows.begin(); i != rows.end(); ++i) { - TimeAxisViewPtr t = (*i)[_columns.tv]; - if (t == tv) { + if ((*i)[_columns.tv] == &tv) { (*i)[_columns.visible] = true; break; } @@ -462,7 +459,7 @@ EditorRoutes::hide_all_tracks (bool with_select) for (i = rows.begin(); i != rows.end(); ++i) { TreeModel::Row row = (*i); - TimeAxisViewPtr tv = row[_columns.tv]; + TimeAxisView *tv = row[_columns.tv]; if (tv == 0) { continue; @@ -491,7 +488,7 @@ EditorRoutes::set_all_tracks_visibility (bool yn) for (i = rows.begin(); i != rows.end(); ++i) { TreeModel::Row row = (*i); - TimeAxisViewPtr tv = row[_columns.tv]; + TimeAxisView* tv = row[_columns.tv]; if (tv == 0) { continue; @@ -513,14 +510,14 @@ EditorRoutes::set_all_audio_visibility (int tracks, bool yn) for (i = rows.begin(); i != rows.end(); ++i) { TreeModel::Row row = (*i); - TimeAxisViewPtr tv = row[_columns.tv]; - AudioTimeAxisViewPtr atv; + TimeAxisView* tv = row[_columns.tv]; + AudioTimeAxisView* atv; if (tv == 0) { continue; } - if ((atv = boost::dynamic_pointer_cast<AudioTimeAxisView>(tv)) != 0) { + if ((atv = dynamic_cast<AudioTimeAxisView*>(tv)) != 0) { switch (tracks) { case 0: (*i)[_columns.visible] = yn; @@ -603,7 +600,7 @@ EditorRoutes::button_press (GdkEventButton* ev) return false; case 1: if ((iter = _model->get_iter (path))) { - TimeAxisViewPtr tv = (*iter)[_columns.tv]; + TimeAxisView* tv = (*iter)[_columns.tv]; if (tv) { bool visible = (*iter)[_columns.visible]; (*iter)[_columns.visible] = !visible; @@ -659,10 +656,10 @@ EditorRoutes::initial_display () _no_redisplay = true; for (i = rows.begin(); i != rows.end(); ++i) { - TimeAxisViewPtr tv = (*i)[_columns.tv]; - RouteTimeAxisViewPtr rtv; + TimeAxisView *tv = (*i)[_columns.tv]; + RouteTimeAxisView *rtv; - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView>(tv)) != 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*>(tv)) != 0) { if (rtv->route()->is_master()) { _display.get_selection()->unselect (i); } @@ -706,14 +703,14 @@ EditorRoutes::move_selected_tracks (bool up) return; } - typedef std::pair<TimeAxisViewPtr,boost::shared_ptr<Route> > ViewRoute; + typedef std::pair<TimeAxisView*,boost::shared_ptr<Route> > ViewRoute; std::list<ViewRoute> view_routes; std::vector<int> neworder; TreeModel::Children rows = _model->children(); TreeModel::Children::iterator ri; for (ri = rows.begin(); ri != rows.end(); ++ri) { - TimeAxisViewPtr tv = (*ri)[_columns.tv]; + TimeAxisView* tv = (*ri)[_columns.tv]; boost::shared_ptr<Route> route = (*ri)[_columns.route]; view_routes.push_back (ViewRoute (tv, route)); @@ -831,10 +828,10 @@ EditorRoutes::update_rec_display () } } -list<TimeAxisViewPtr> +list<TimeAxisView*> EditorRoutes::views () const { - list<TimeAxisViewPtr> v; + list<TimeAxisView*> v; for (TreeModel::Children::iterator i = _model->children().begin(); i != _model->children().end(); ++i) { v.push_back ((*i)[_columns.tv]); } diff --git a/gtk2_ardour/editor_routes.h b/gtk2_ardour/editor_routes.h index f1602c40c0..a075902dee 100644 --- a/gtk2_ardour/editor_routes.h +++ b/gtk2_ardour/editor_routes.h @@ -29,7 +29,7 @@ public: } void move_selected_tracks (bool); - void show_track_in_display (TimeAxisViewPtr); + void show_track_in_display (TimeAxisView &); void suspend_redisplay () { _no_redisplay = true; } @@ -39,9 +39,9 @@ public: } void redisplay (); void update_visibility (); - void routes_added (std::list<RouteTimeAxisViewPtr> routes); - void hide_track_in_display (TimeAxisViewPtr); - std::list<TimeAxisViewPtr> views () const; + void routes_added (std::list<RouteTimeAxisView*> routes); + void hide_track_in_display (TimeAxisView &); + std::list<TimeAxisView*> views () const; void hide_all_tracks (bool); void clear (); void sync_order_keys (std::string const &); @@ -57,7 +57,7 @@ private: void reordered (Gtk::TreeModel::Path const &, Gtk::TreeModel::iterator const &, int *); bool button_press (GdkEventButton *); void route_name_changed (boost::weak_ptr<ARDOUR::Route>); - void route_removed (TimeAxisViewPtr); + void route_removed (TimeAxisView *); void handle_gui_changes (std::string const &, void *); void update_rec_display (); void set_all_tracks_visibility (bool); @@ -87,7 +87,7 @@ private: Gtk::TreeModelColumn<bool> visible; Gtk::TreeModelColumn<bool> rec_enabled; Gtk::TreeModelColumn<bool> is_track; - Gtk::TreeModelColumn<TimeAxisViewPtr> tv; + Gtk::TreeModelColumn<TimeAxisView*> tv; Gtk::TreeModelColumn<boost::shared_ptr<ARDOUR::Route> > route; }; diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index d6a6fbc59d..c25fa67a16 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -755,7 +755,7 @@ Editor::update_ruler_visibility () } gdouble bottom_track_pos = vertical_adjustment.get_value() + _canvas_height - canvas_timebars_vsize; - std::pair<TimeAxisViewPtr, int> const p = trackview_by_y_position (bottom_track_pos); + std::pair<TimeAxisView*, int> const p = trackview_by_y_position (bottom_track_pos); if (p.first) { p.first->clip_to_viewport (); } diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index 378885e293..3b53a2d821 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -49,23 +49,23 @@ using namespace Editing; struct TrackViewByPositionSorter { - bool operator() (const TimeAxisViewPtr a, const TimeAxisViewPtr b) { + bool operator() (const TimeAxisView* a, const TimeAxisView *b) { return a->y_position() < b->y_position(); } }; bool -Editor::extend_selection_to_track (TimeAxisViewPtr view) +Editor::extend_selection_to_track (TimeAxisView& view) { - if (selection->selected (view)) { + if (selection->selected (&view)) { /* already selected, do nothing */ return false; } if (selection->tracks.empty()) { - if (!selection->selected (view)) { - selection->set (view); + if (!selection->selected (&view)) { + selection->set (&view); return true; } else { return false; @@ -82,15 +82,15 @@ Editor::extend_selection_to_track (TimeAxisViewPtr view) sorted.sort (cmp); - if (!selection->selected (view)) { - to_be_added.push_back (view); + if (!selection->selected (&view)) { + to_be_added.push_back (&view); } /* figure out if we should go forward or backwards */ for (TrackViewList::iterator i = sorted.begin(); i != sorted.end(); ++i) { - if (*i == view) { + if ((*i) == &view) { passed_clicked = true; } @@ -110,7 +110,7 @@ Editor::extend_selection_to_track (TimeAxisViewPtr view) for (TrackViewList::iterator i = sorted.begin(); i != sorted.end(); ++i) { - if (*i == view) { + if ((*i) == &view) { passed_clicked = true; continue; } @@ -131,7 +131,7 @@ Editor::extend_selection_to_track (TimeAxisViewPtr view) for (TrackViewList::reverse_iterator r = sorted.rbegin(); r != sorted.rend(); ++r) { - if (*r == view) { + if ((*r) == &view) { passed_clicked = true; continue; } @@ -180,36 +180,36 @@ Editor::set_selected_track_as_side_effect (bool force) if (!selection->tracks.empty()) { if (!selection->selected (clicked_routeview)) { - selection->add (boost::static_pointer_cast<TimeAxisView> (clicked_routeview)); + selection->add (clicked_routeview); } } else if (force) { - selection->set (boost::static_pointer_cast<TimeAxisView> (clicked_routeview)); + selection->set (clicked_routeview); } } void -Editor::set_selected_track (TimeAxisViewPtr view, Selection::Operation op, bool no_remove) +Editor::set_selected_track (TimeAxisView& view, Selection::Operation op, bool no_remove) { switch (op) { case Selection::Toggle: - if (selection->selected (view)) { + if (selection->selected (&view)) { if (!no_remove) { - selection->remove (view); + selection->remove (&view); } } else { - selection->add (view); + selection->add (&view); } break; case Selection::Add: - if (!selection->selected (view)) { - selection->add (view); + if (!selection->selected (&view)) { + selection->add (&view); } break; case Selection::Set: - selection->set (view); + selection->set (&view); break; case Selection::Extend: @@ -229,7 +229,7 @@ Editor::set_selected_track_from_click (bool press, Selection::Operation op, bool return; } - set_selected_track (clicked_routeview, op, no_remove); + set_selected_track (*clicked_routeview, op, no_remove); } bool @@ -269,7 +269,7 @@ Editor::get_onscreen_tracks (TrackViewList& tvl) */ void -Editor::get_equivalent_tracks (RouteTimeAxisViewPtr basis, set<RouteTimeAxisViewPtr> & equivs, RouteGroup::Property prop) const +Editor::get_equivalent_tracks (RouteTimeAxisView* basis, set<RouteTimeAxisView*> & equivs, RouteGroup::Property prop) const { equivs.insert (basis); @@ -280,7 +280,7 @@ Editor::get_equivalent_tracks (RouteTimeAxisViewPtr basis, set<RouteTimeAxisView properties; find other members */ for (TrackViewList::const_iterator i = track_views.begin(); i != track_views.end(); ++i) { - RouteTimeAxisViewPtr v = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i); + RouteTimeAxisView* v = dynamic_cast<RouteTimeAxisView*> (*i); if (v && v->route()->route_group() == group) { equivs.insert (v); } @@ -294,10 +294,10 @@ Editor::get_equivalent_tracks (RouteTimeAxisViewPtr basis, set<RouteTimeAxisView */ void -Editor::get_relevant_tracks (set<RouteTimeAxisViewPtr>& relevant_tracks) const +Editor::get_relevant_tracks (set<RouteTimeAxisView*>& relevant_tracks) const { for (TrackSelection::iterator ti = selection->tracks.begin(); ti != selection->tracks.end(); ++ti) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*ti); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*ti); if (rtv) { get_equivalent_tracks (rtv, relevant_tracks, RouteGroup::Select); } @@ -313,37 +313,37 @@ Editor::get_relevant_tracks (set<RouteTimeAxisViewPtr>& relevant_tracks) const */ void -Editor::mapover_tracks (slot<void, RouteTimeAxisViewPtr, uint32_t> sl, TimeAxisViewPtr basis, RouteGroup::Property prop) const +Editor::mapover_tracks (slot<void, RouteTimeAxisView&, uint32_t> sl, TimeAxisView* basis, RouteGroup::Property prop) const { - RouteTimeAxisViewPtr route_basis = boost::dynamic_pointer_cast<RouteTimeAxisView> (basis); + RouteTimeAxisView* route_basis = dynamic_cast<RouteTimeAxisView*> (basis); if (route_basis == 0) { return; } - set<RouteTimeAxisViewPtr> tracks; + set<RouteTimeAxisView*> tracks; get_equivalent_tracks (route_basis, tracks, prop); /* call the slots */ uint32_t const sz = tracks.size (); - for (set<RouteTimeAxisViewPtr>::iterator i = tracks.begin(); i != tracks.end(); ++i) { - sl (*i, sz); + for (set<RouteTimeAxisView*>::iterator i = tracks.begin(); i != tracks.end(); ++i) { + sl (**i, sz); } } void -Editor::mapped_get_equivalent_regions (RouteTimeAxisViewPtr tv, uint32_t ignored, RegionView * basis, vector<RegionView*>* all_equivs) const +Editor::mapped_get_equivalent_regions (RouteTimeAxisView& tv, uint32_t ignored, RegionView * basis, vector<RegionView*>* all_equivs) const { boost::shared_ptr<Playlist> pl; vector<boost::shared_ptr<Region> > results; RegionView* marv; boost::shared_ptr<Diskstream> ds; - if ((ds = tv->get_diskstream()) == 0) { + if ((ds = tv.get_diskstream()) == 0) { /* bus */ return; } - if (tv == basis->get_time_axis_view()) { + if (&tv == &basis->get_time_axis_view()) { /* looking in same track as the original */ return; } @@ -353,7 +353,7 @@ Editor::mapped_get_equivalent_regions (RouteTimeAxisViewPtr tv, uint32_t ignored } for (vector<boost::shared_ptr<Region> >::iterator ir = results.begin(); ir != results.end(); ++ir) { - if ((marv = tv->view()->find_view (*ir)) != 0) { + if ((marv = tv.view()->find_view (*ir)) != 0) { all_equivs->push_back (marv); } } @@ -362,7 +362,7 @@ Editor::mapped_get_equivalent_regions (RouteTimeAxisViewPtr tv, uint32_t ignored void Editor::get_equivalent_regions (RegionView* basis, vector<RegionView*>& equivalent_regions, RouteGroup::Property prop) const { - mapover_tracks (bind (mem_fun (*this, &Editor::mapped_get_equivalent_regions), basis, &equivalent_regions), basis->get_trackview(), prop); + mapover_tracks (bind (mem_fun (*this, &Editor::mapped_get_equivalent_regions), basis, &equivalent_regions), &basis->get_trackview(), prop); /* add clicked regionview since we skipped all other regions in the same track as the one it was in */ @@ -377,9 +377,10 @@ Editor::get_equivalent_regions (RegionSelection & basis, RouteGroup::Property pr for (RegionSelection::const_iterator i = basis.begin(); i != basis.end(); ++i) { vector<RegionView*> eq; - + mapover_tracks ( - bind (mem_fun (*this, &Editor::mapped_get_equivalent_regions), *i, &eq), (*i)->get_trackview(), prop + bind (mem_fun (*this, &Editor::mapped_get_equivalent_regions), *i, &eq), + &(*i)->get_trackview(), prop ); for (vector<RegionView*>::iterator j = eq.begin(); j != eq.end(); ++j) { @@ -400,9 +401,9 @@ Editor::get_regionview_count_from_region_list (boost::shared_ptr<Region> region) for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { - RouteTimeAxisViewPtr tatv; + RouteTimeAxisView* tatv; - if ((tatv = boost::dynamic_pointer_cast<RouteTimeAxisView> (*i)) != 0) { + if ((tatv = dynamic_cast<RouteTimeAxisView*> (*i)) != 0) { boost::shared_ptr<Playlist> pl; vector<boost::shared_ptr<Region> > results; @@ -529,7 +530,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op, first_frame = max_frames; for (RegionSelection::iterator x = selection->regions.begin(); x != selection->regions.end(); ++x) { - if ((*x)->get_time_axis_view() == clicked_regionview->get_time_axis_view()) { + if (&(*x)->get_time_axis_view() == &clicked_regionview->get_time_axis_view()) { if ((*x)->region()->last_frame() > last_frame) { last_frame = (*x)->region()->last_frame(); @@ -609,8 +610,8 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op, /* 2. find all the tracks we should select in */ - set<RouteTimeAxisViewPtr> relevant_tracks; - set<RouteTimeAxisViewPtr> already_in_selection; + set<RouteTimeAxisView*> relevant_tracks; + set<RouteTimeAxisView*> already_in_selection; get_relevant_tracks (relevant_tracks); @@ -624,7 +625,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op, if (!selection->selected (entered_regionview)) { - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (entered_regionview->get_time_axis_view()); + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (&entered_regionview->get_time_axis_view()); if (rtv) { @@ -636,17 +637,17 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op, already a selected region. */ - RouteTimeAxisViewPtr closest; + RouteTimeAxisView* closest = 0; int distance = INT_MAX; int key = rtv->route()->order_key ("editor"); for (RegionSelection::iterator x = selection->regions.begin(); x != selection->regions.end(); ++x) { - RouteTimeAxisViewPtr artv = boost::dynamic_pointer_cast<RouteTimeAxisView>((*x)->get_time_axis_view()); + RouteTimeAxisView* artv = dynamic_cast<RouteTimeAxisView*>(&(*x)->get_time_axis_view()); if (artv && artv != rtv) { - pair<set<RouteTimeAxisViewPtr>::iterator,bool> result; + pair<set<RouteTimeAxisView*>::iterator,bool> result; result = already_in_selection.insert (artv); @@ -677,7 +678,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op, } for (TrackViewList::iterator x = track_views.begin(); x != track_views.end(); ++x) { - RouteTimeAxisViewPtr artv = boost::dynamic_pointer_cast<RouteTimeAxisView>(*x); + RouteTimeAxisView* artv = dynamic_cast<RouteTimeAxisView*>(*x); if (artv && artv != rtv) { int k = artv->route()->order_key ("editor"); @@ -710,7 +711,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op, get_relevant_tracks (relevant_tracks); - for (set<RouteTimeAxisViewPtr>::iterator t = relevant_tracks.begin(); t != relevant_tracks.end(); ++t) { + for (set<RouteTimeAxisView*>::iterator t = relevant_tracks.begin(); t != relevant_tracks.end(); ++t) { (*t)->get_selectables (first_frame, last_frame, -1.0, -1.0, results); } @@ -807,7 +808,7 @@ Editor::track_selection_changed () case 0: break; default: - set_selected_mixer_strip (selection->tracks.front()); + set_selected_mixer_strip (*(selection->tracks.front())); break; } @@ -1060,7 +1061,7 @@ Editor::set_selection_from_region () return; } - selection->set (TimeAxisViewPtr (), selection->regions.start(), selection->regions.end_frame()); + selection->set (0, selection->regions.start(), selection->regions.end_frame()); if (!Profile->get_sae()) { set_mouse_mode (Editing::MouseRange, false); } @@ -1093,7 +1094,7 @@ void Editor::set_selection_from_range (Location& loc) { begin_reversible_command (_("set selection from range")); - selection->set (TimeAxisViewPtr (), loc.start(), loc.end()); + selection->set (0, loc.start(), loc.end()); commit_reversible_command (); if (!Profile->get_sae()) { @@ -1320,7 +1321,7 @@ Editor::select_range_between () } set_mouse_mode (MouseRange); - selection->set (TimeAxisViewPtr (), start, end); + selection->set ((TimeAxisView*) 0, start, end); } bool diff --git a/gtk2_ardour/editor_timefx.cc b/gtk2_ardour/editor_timefx.cc index b5e68c1fd2..4339962a87 100644 --- a/gtk2_ardour/editor_timefx.cc +++ b/gtk2_ardour/editor_timefx.cc @@ -70,10 +70,9 @@ Editor::time_stretch (RegionSelection& regions, float fraction) return time_fx (regions, fraction, false); } else { // MIDI, just stretch - RouteTimeAxisViewPtr rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (regions.front()->get_time_axis_view()); - if (!rtv) { + RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (®ions.front()->get_time_axis_view()); + if (!rtv) return -1; - } boost::shared_ptr<Playlist> playlist = rtv->track()->diskstream()->playlist(); @@ -263,14 +262,14 @@ Editor::do_timefx (TimeFXDialog& dialog) } boost::shared_ptr<AudioRegion> region (arv->audio_region()); - TimeAxisViewPtr tv = arv->get_time_axis_view(); - RouteTimeAxisViewPtr rtv; + TimeAxisView* tv = &(arv->get_time_axis_view()); + RouteTimeAxisView* rtv; RegionSelection::iterator tmp; tmp = i; ++tmp; - if ((rtv = boost::dynamic_pointer_cast<RouteTimeAxisView> (tv)) == 0) { + if ((rtv = dynamic_cast<RouteTimeAxisView*> (tv)) == 0) { i = tmp; continue; } diff --git a/gtk2_ardour/ghostregion.cc b/gtk2_ardour/ghostregion.cc index eb9dbb907a..cfd9d3ea43 100644 --- a/gtk2_ardour/ghostregion.cc +++ b/gtk2_ardour/ghostregion.cc @@ -34,7 +34,7 @@ using namespace Editing; using namespace ArdourCanvas; using namespace ARDOUR; -GhostRegion::GhostRegion (ArdourCanvas::Group* parent, TimeAxisViewPtr tv, TimeAxisViewPtr source_tv, double initial_pos) +GhostRegion::GhostRegion (ArdourCanvas::Group* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_pos) : trackview (tv) , source_trackview (source_tv) { @@ -45,7 +45,7 @@ GhostRegion::GhostRegion (ArdourCanvas::Group* parent, TimeAxisViewPtr tv, TimeA base_rect = new ArdourCanvas::SimpleRect (*group); base_rect->property_x1() = (double) 0.0; base_rect->property_y1() = (double) 0.0; - base_rect->property_y2() = (double) trackview->current_height(); + base_rect->property_y2() = (double) trackview.current_height(); base_rect->property_outline_what() = (guint32) 0; if (!is_automation_ghost()) { @@ -75,7 +75,7 @@ GhostRegion::set_duration (double units) void GhostRegion::set_height () { - base_rect->property_y2() = (double) trackview->current_height(); + base_rect->property_y2() = (double) trackview.current_height(); } void @@ -89,7 +89,7 @@ GhostRegion::set_colors () guint GhostRegion::source_track_color(unsigned char alpha) { - Gdk::Color color = source_trackview->color(); + Gdk::Color color = source_trackview.color(); unsigned char r,g,b ; r = color.get_red()/256; g = color.get_green()/256; @@ -99,11 +99,11 @@ GhostRegion::source_track_color(unsigned char alpha) { bool GhostRegion::is_automation_ghost() { - return (boost::dynamic_pointer_cast<AutomationTimeAxisViewPtr> (trackview)) != 0; + return (dynamic_cast<AutomationTimeAxisView*>(&trackview)) != 0; } -AudioGhostRegion::AudioGhostRegion(TimeAxisViewPtr tv, TimeAxisViewPtr source_tv, double initial_unit_pos) - : GhostRegion(tv->ghost_group(), tv, source_tv, initial_unit_pos) { +AudioGhostRegion::AudioGhostRegion(TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos) + : GhostRegion(tv.ghost_group(), tv, source_tv, initial_unit_pos) { } void @@ -123,10 +123,10 @@ AudioGhostRegion::set_height () GhostRegion::set_height(); - ht = ((trackview->current_height()) / (double) waves.size()); + ht = ((trackview.current_height()) / (double) waves.size()); for (n = 0, i = waves.begin(); i != waves.end(); ++i, ++n) { - gdouble const yoff = n * ht; + gdouble yoff = n * ht; (*i)->property_height() = ht; (*i)->property_y() = yoff; } @@ -158,14 +158,14 @@ AudioGhostRegion::set_colors () * a midistreamview. But what to do when positioning the midi ghost here? For example, there is * no range controller in these tracks. maybe show the whole range. */ -MidiGhostRegion::MidiGhostRegion(TimeAxisViewPtr tv, TimeAxisViewPtr source_tv, double initial_unit_pos) - : GhostRegion (tv->ghost_group(), tv, source_tv, initial_unit_pos) +MidiGhostRegion::MidiGhostRegion(TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos) + : GhostRegion(tv.ghost_group(), tv, source_tv, initial_unit_pos) { base_rect->lower_to_bottom(); } -MidiGhostRegion::MidiGhostRegion(MidiStreamView& msv, TimeAxisViewPtr source_tv, double initial_unit_pos) +MidiGhostRegion::MidiGhostRegion(MidiStreamView& msv, TimeAxisView& source_tv, double initial_unit_pos) : GhostRegion(msv.midi_underlay_group, msv.trackview(), source_tv, initial_unit_pos) { base_rect->lower_to_bottom(); @@ -222,9 +222,9 @@ MidiGhostRegion::set_samples_per_unit (double spu) MidiStreamView* MidiGhostRegion::midi_view() { - MidiTimeAxisViewPtr mtv; + MidiTimeAxisView* mtv; - if ((mtv = boost::dynamic_pointer_cast<MidiTimeAxisView> (trackview)) != 0) { + if ((mtv = dynamic_cast<MidiTimeAxisView*>(&trackview)) != 0) { return mtv->midi_view(); } else { diff --git a/gtk2_ardour/ghostregion.h b/gtk2_ardour/ghostregion.h index 823d164ede..8b9f0d1093 100644 --- a/gtk2_ardour/ghostregion.h +++ b/gtk2_ardour/ghostregion.h @@ -40,7 +40,7 @@ class TimeAxisView; class GhostRegion : public sigc::trackable { public: - GhostRegion(ArdourCanvas::Group* parent, TimeAxisViewPtr tv, TimeAxisViewPtr source_tv, double initial_unit_pos); + GhostRegion(ArdourCanvas::Group* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos); virtual ~GhostRegion(); virtual void set_samples_per_unit(double spu) = 0; @@ -54,15 +54,15 @@ public: sigc::signal<void,GhostRegion*> GoingAway; - TimeAxisViewPtr trackview; - TimeAxisViewPtr source_trackview; + TimeAxisView& trackview; + TimeAxisView& source_trackview; ArdourCanvas::Group* group; ArdourCanvas::SimpleRect* base_rect; }; class AudioGhostRegion : public GhostRegion { public: - AudioGhostRegion(TimeAxisViewPtr tv, TimeAxisViewPtr source_tv, double initial_unit_pos); + AudioGhostRegion(TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos); void set_samples_per_unit(double spu); void set_height(); @@ -100,8 +100,8 @@ public: ArdourCanvas::Diamond* diamond; }; - MidiGhostRegion(TimeAxisViewPtr tv, TimeAxisViewPtr source_tv, double initial_unit_pos); - MidiGhostRegion(MidiStreamView& msv, TimeAxisViewPtr source_tv, double initial_unit_pos); + MidiGhostRegion(TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos); + MidiGhostRegion(MidiStreamView& msv, TimeAxisView& source_tv, double initial_unit_pos); ~MidiGhostRegion(); MidiStreamView* midi_view(); diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 361b020b18..8c20c02237 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -65,7 +65,7 @@ using namespace PBD; using namespace Editing; using namespace ArdourCanvas; -MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisViewPtr tv, +MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &tv, boost::shared_ptr<MidiRegion> r, double spu, Gdk::Color const & basic_color) : RegionView (parent, tv, r, spu, basic_color) , _force_channel(-1) @@ -84,7 +84,7 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisViewPt _note_group->raise_to_top(); } -MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisViewPtr tv, +MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &tv, boost::shared_ptr<MidiRegion> r, double spu, Gdk::Color& basic_color, TimeAxisViewItem::Visibility visibility) : RegionView (parent, tv, r, spu, basic_color, false, visibility) @@ -163,7 +163,7 @@ MidiRegionView::init (Gdk::Color const & basic_color, bool wfd) compute_colors (basic_color); - set_height (trackview->current_height()); + set_height (trackview.current_height()); region_muted (); region_sync_changed (); @@ -202,10 +202,10 @@ MidiRegionView::canvas_event(GdkEvent* ev) static ArdourCanvas::SimpleRect* drag_rect = NULL; - if (trackview->editor().current_mouse_mode() != MouseNote) + if (trackview.editor().current_mouse_mode() != MouseNote) return false; - const Editing::MidiEditMode midi_edit_mode = trackview->editor().current_midi_edit_mode(); + const Editing::MidiEditMode midi_edit_mode = trackview.editor().current_midi_edit_mode(); switch (ev->type) { case GDK_KEY_PRESS: @@ -253,8 +253,8 @@ MidiRegionView::canvas_event(GdkEvent* ev) group->w2i(event_x, event_y); // convert event_x to global frame - event_frame = trackview->editor().pixel_to_frame(event_x) + _region->position(); - trackview->editor().snap_to(event_frame); + event_frame = trackview.editor().pixel_to_frame(event_x) + _region->position(); + trackview.editor().snap_to(event_frame); // convert event_frame back to local coordinates relative to position event_frame -= _region->position(); @@ -294,7 +294,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) drag_start_y = event_y; drag_rect = new ArdourCanvas::SimpleRect(*group); - drag_rect->property_x1() = trackview->editor().frame_to_pixel(event_frame); + drag_rect->property_x1() = trackview.editor().frame_to_pixel(event_frame); drag_rect->property_y1() = midi_stream_view()->note_to_y( midi_stream_view()->y_to_note(event_y)); @@ -323,7 +323,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) } if (_mouse_state == AddDragging) - event_x = trackview->editor().frame_to_pixel(event_frame); + event_x = trackview.editor().frame_to_pixel(event_frame); if (drag_rect) { if (event_x > drag_start_x) @@ -357,7 +357,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) event_y = ev->motion.y; group->w2i(event_x, event_y); group->ungrab(ev->button.time); - event_frame = trackview->editor().pixel_to_frame(event_x); + event_frame = trackview.editor().pixel_to_frame(event_x); if (_pressed_button != 1) { return false; @@ -385,7 +385,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) _mouse_state = None; if (drag_rect->property_x2() > drag_rect->property_x1() + 2) { const double x = drag_rect->property_x1(); - const double length = trackview->editor().pixel_to_frame( + const double length = trackview.editor().pixel_to_frame( drag_rect->property_x2() - drag_rect->property_x1()); create_note_at(x, drag_rect->property_y1(), frames_to_beats(length)); @@ -410,7 +410,7 @@ MidiRegionView::canvas_event(GdkEvent* ev) void MidiRegionView::create_note_at(double x, double y, double length) { - MidiTimeAxisViewPtr mtv = boost::dynamic_pointer_cast<MidiTimeAxisView> (trackview); + MidiTimeAxisView* const mtv = dynamic_cast<MidiTimeAxisView*>(&trackview); MidiStreamView* const view = mtv->midi_view(); double note = midi_stream_view()->y_to_note(y); @@ -419,7 +419,7 @@ MidiRegionView::create_note_at(double x, double y, double length) assert(note <= 127.0); // Start of note in frames relative to region start - nframes64_t start_frames = snap_frame_to_frame(trackview->editor().pixel_to_frame(x)); + nframes64_t start_frames = snap_frame_to_frame(trackview.editor().pixel_to_frame(x)); assert(start_frames >= 0); // Snap length @@ -434,7 +434,7 @@ MidiRegionView::create_note_at(double x, double y, double length) MidiModel::DeltaCommand* cmd = _model->new_delta_command("add note"); cmd->add(new_note); - _model->apply_command(trackview->session(), cmd); + _model->apply_command(trackview.session(), cmd); } @@ -512,7 +512,7 @@ MidiRegionView::apply_command() _marked_for_selection.insert((*i)->note()); } - _model->apply_command(trackview->session(), _delta_command); + _model->apply_command(trackview.session(), _delta_command); _delta_command = NULL; midi_view()->midi_track()->diskstream()->playlist_modified(); @@ -628,7 +628,7 @@ MidiRegionView::display_sysexes() string text = str.str(); ArdourCanvas::Group* const group = (ArdourCanvas::Group*)get_canvas_group(); - const double x = trackview->editor().frame_to_pixel(beats_to_frames(time)); + const double x = trackview.editor().frame_to_pixel(beats_to_frames(time)); double height = midi_stream_view()->contents_height(); @@ -745,7 +745,7 @@ MidiRegionView::apply_note_range (uint8_t min, uint8_t max, bool force) note->property_y1() = y1; note->property_y2() = y2; } else if (CanvasHit* hit = dynamic_cast<CanvasHit*>(event)) { - double x = trackview->editor().frame_to_pixel( + double x = trackview.editor().frame_to_pixel( beats_to_frames(event->note()->time()) - _region->start()); const double diamond_size = midi_stream_view()->note_height() / 2.0; double y = midi_stream_view()->note_to_y(event->note()->note()) @@ -762,12 +762,12 @@ MidiRegionView::apply_note_range (uint8_t min, uint8_t max, bool force) } GhostRegion* -MidiRegionView::add_ghost (TimeAxisViewPtr tv) +MidiRegionView::add_ghost (TimeAxisView& tv) { CanvasNote* note; double unit_position = _region->position () / samples_per_unit; - MidiTimeAxisViewPtr mtv = boost::dynamic_pointer_cast<MidiTimeAxisView> (tv); + MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*>(&tv); MidiGhostRegion* ghost; if (mtv && mtv->midi_view()) { @@ -831,7 +831,7 @@ MidiRegionView::resolve_note(uint8_t note, double end_time) if (_active_notes && _active_notes[note]) { const nframes64_t end_time_frames = beats_to_frames(end_time); - _active_notes[note]->property_x2() = trackview->editor().frame_to_pixel(end_time_frames); + _active_notes[note]->property_x2() = trackview.editor().frame_to_pixel(end_time_frames); _active_notes[note]->property_outline_what() = (guint32) 0xF; // all edges _active_notes[note] = NULL; } @@ -849,7 +849,7 @@ MidiRegionView::extend_active_notes() for (unsigned i=0; i < 128; ++i) { if (_active_notes[i]) { - _active_notes[i]->property_x2() = trackview->editor().frame_to_pixel(_region->length()); + _active_notes[i]->property_x2() = trackview.editor().frame_to_pixel(_region->length()); } } } @@ -857,11 +857,11 @@ MidiRegionView::extend_active_notes() void MidiRegionView::play_midi_note(boost::shared_ptr<NoteType> note) { - if (!trackview->editor().sound_notes()) { + if (!trackview.editor().sound_notes()) { return; } - boost::shared_ptr<RouteUI> route_ui = boost::dynamic_pointer_cast<RouteUI> (trackview); + RouteUI* route_ui = dynamic_cast<RouteUI*> (&trackview); assert(route_ui); route_ui->midi_track()->write_immediate_event( @@ -877,7 +877,7 @@ MidiRegionView::play_midi_note(boost::shared_ptr<NoteType> note) bool MidiRegionView::play_midi_note_off(boost::shared_ptr<NoteType> note) { - boost::shared_ptr<RouteUI> route_ui = boost::dynamic_pointer_cast<RouteUI> (trackview); + RouteUI* route_ui = dynamic_cast<RouteUI*> (&trackview); assert(route_ui); route_ui->midi_track()->write_immediate_event( @@ -916,12 +916,12 @@ MidiRegionView::add_note(const boost::shared_ptr<NoteType> note) CanvasNoteEvent* event = 0; - const double x = trackview->editor().frame_to_pixel(note_start_frames - _region->start()); + const double x = trackview.editor().frame_to_pixel(note_start_frames - _region->start()); if (midi_view()->note_mode() == Sustained) { const double y1 = midi_stream_view()->note_to_y(note->note()); const double note_endpixel = - trackview->editor().frame_to_pixel(note_end_frames - _region->start()); + trackview.editor().frame_to_pixel(note_end_frames - _region->start()); CanvasNote* ev_rect = new CanvasNote(*this, *group, note); ev_rect->property_x1() = x; @@ -929,7 +929,7 @@ MidiRegionView::add_note(const boost::shared_ptr<NoteType> note) if (note->length() > 0) { ev_rect->property_x2() = note_endpixel; } else { - ev_rect->property_x2() = trackview->editor().frame_to_pixel(_region->length()); + ev_rect->property_x2() = trackview.editor().frame_to_pixel(_region->length()); } ev_rect->property_y2() = y1 + floor(midi_stream_view()->note_height()); @@ -996,7 +996,7 @@ MidiRegionView::add_pgm_change(PCEvent& program, const string& displaytext) assert(program.time >= 0); ArdourCanvas::Group* const group = (ArdourCanvas::Group*)get_canvas_group(); - const double x = trackview->editor().frame_to_pixel(beats_to_frames(program.time)); + const double x = trackview.editor().frame_to_pixel(beats_to_frames(program.time)); double height = midi_stream_view()->contents_height(); @@ -1319,9 +1319,9 @@ MidiRegionView::note_dropped(CanvasNoteEvent* ev, double dt, uint8_t dnote) nframes64_t start_frames = beats_to_frames((*i)->note()->time()); if (dt >= 0) { - start_frames += snap_frame_to_frame(trackview->editor().pixel_to_frame(dt)); + start_frames += snap_frame_to_frame(trackview.editor().pixel_to_frame(dt)); } else { - start_frames -= snap_frame_to_frame(trackview->editor().pixel_to_frame(-dt)); + start_frames -= snap_frame_to_frame(trackview.editor().pixel_to_frame(-dt)); } copy->set_time(frames_to_beats(start_frames)); @@ -1361,7 +1361,7 @@ MidiRegionView::note_dropped(CanvasNoteEvent* ev, double dt, uint8_t dnote) nframes64_t MidiRegionView::snap_pixel_to_frame(double x) { - PublicEditor& editor = trackview->editor(); + PublicEditor& editor = trackview.editor(); // x is region relative, convert it to global absolute frames nframes64_t frame = editor.pixel_to_frame(x) + _region->position(); editor.snap_to(frame); @@ -1371,7 +1371,7 @@ MidiRegionView::snap_pixel_to_frame(double x) nframes64_t MidiRegionView::snap_frame_to_frame(nframes64_t x) { - PublicEditor& editor = trackview->editor(); + PublicEditor& editor = trackview.editor(); // x is region relative, convert it to global absolute frames nframes64_t frame = x + _region->position(); editor.snap_to(frame); @@ -1381,14 +1381,14 @@ MidiRegionView::snap_frame_to_frame(nframes64_t x) double MidiRegionView::snap_to_pixel(double x) { - return (double) trackview->editor().frame_to_pixel(snap_pixel_to_frame(x)); + return (double) trackview.editor().frame_to_pixel(snap_pixel_to_frame(x)); } double MidiRegionView::get_position_pixels() { nframes64_t region_frame = get_position(); - return trackview->editor().frame_to_pixel(region_frame); + return trackview.editor().frame_to_pixel(region_frame); } nframes64_t diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index 45997622b7..3df4001ab4 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -63,7 +63,7 @@ class MidiRegionView : public RegionView typedef Evoral::Note<ARDOUR::MidiModel::TimeType> NoteType; MidiRegionView (ArdourCanvas::Group *, - RouteTimeAxisViewPtr, + RouteTimeAxisView&, boost::shared_ptr<ARDOUR::MidiRegion>, double initial_samples_per_unit, Gdk::Color const & basic_color); @@ -78,9 +78,8 @@ class MidiRegionView : public RegionView inline const boost::shared_ptr<ARDOUR::MidiRegion> midi_region() const { return boost::dynamic_pointer_cast<ARDOUR::MidiRegion>(_region); } - inline MidiTimeAxisViewPtr midi_view() const { - return boost::dynamic_pointer_cast<MidiTimeAxisView> (trackview); - } + inline MidiTimeAxisView* midi_view() const + { return dynamic_cast<MidiTimeAxisView*>(&trackview); } inline MidiStreamView* midi_stream_view() const { return midi_view()->midi_view(); } @@ -94,7 +93,7 @@ class MidiRegionView : public RegionView void redisplay_model(); - GhostRegion* add_ghost (TimeAxisViewPtr); + GhostRegion* add_ghost (TimeAxisView&); void add_note(const boost::shared_ptr<NoteType> note); void resolve_note(uint8_t note_num, double end_time); @@ -259,7 +258,7 @@ class MidiRegionView : public RegionView * to the TimeAxisViewItem parent class. */ MidiRegionView (ArdourCanvas::Group *, - RouteTimeAxisViewPtr, + RouteTimeAxisView&, boost::shared_ptr<ARDOUR::MidiRegion>, double samples_per_unit, Gdk::Color& basic_color, diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index 4f6b77a53c..30718ad158 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -53,7 +53,7 @@ using namespace ARDOUR; using namespace PBD; using namespace Editing; -MidiStreamView::MidiStreamView (MidiTimeAxisViewPtr tv) +MidiStreamView::MidiStreamView (MidiTimeAxisView& tv) : StreamView (tv) , note_range_adjustment(0.0f, 0.0f, 0.0f) , _range_dirty(false) @@ -63,13 +63,13 @@ MidiStreamView::MidiStreamView (MidiTimeAxisViewPtr tv) , _data_note_min(60) , _data_note_max(71) { - if (tv->is_track()) { + if (tv.is_track()) { stream_base_color = ARDOUR_UI::config()->canvasvar_MidiTrackBase.get(); } else { stream_base_color = ARDOUR_UI::config()->canvasvar_MidiBusBase.get(); } - use_rec_regions = tv->editor().show_waveforms_recording (); + use_rec_regions = tv.editor().show_waveforms_recording (); /* use a group dedicated to MIDI underlays. Audio underlays are not in this group. */ midi_underlay_group = new ArdourCanvas::Group (*canvas_group); @@ -81,16 +81,12 @@ MidiStreamView::MidiStreamView (MidiTimeAxisViewPtr tv) _note_lines->property_x1() = 0; _note_lines->property_y1() = 0; - _note_lines->property_x2() = trackview()->editor().frame_to_pixel (max_frames); + _note_lines->property_x2() = trackview().editor().frame_to_pixel (max_frames); _note_lines->property_y2() = 0; - TimeAxisViewPtr w (_trackview); - _note_lines->signal_event().connect( - bind( - mem_fun(_trackview->editor(), &PublicEditor::canvas_stream_view_event), - _note_lines, w - ) - ); + _note_lines->signal_event().connect(bind( + mem_fun(_trackview.editor(), &PublicEditor::canvas_stream_view_event), + _note_lines, &_trackview)); _note_lines->lower_to_bottom(); @@ -251,7 +247,7 @@ MidiStreamView::update_data_note_range(uint8_t min, uint8_t max) void MidiStreamView::redisplay_diskstream () { - if (!_trackview->is_midi_track()) { + if (!_trackview.is_midi_track()) { return; } @@ -261,7 +257,7 @@ MidiStreamView::redisplay_diskstream () _range_dirty = false; _data_note_min = 127; _data_note_max = 0; - _trackview->get_diskstream()->playlist()->foreach_region( + _trackview.get_diskstream()->playlist()->foreach_region( sigc::mem_fun (*this, &StreamView::update_contents_metrics) ); @@ -284,7 +280,7 @@ MidiStreamView::redisplay_diskstream () } // Add and display region views, and flag them as valid - _trackview->get_diskstream()->playlist()->foreach_region( + _trackview.get_diskstream()->playlist()->foreach_region( sigc::hide_return (sigc::mem_fun (*this, &StreamView::add_region_view)) ); @@ -386,11 +382,11 @@ MidiStreamView::setup_rec_box () { // cerr << _trackview.name() << " streamview SRB\n"; - if (_trackview->session().transport_rolling()) { + if (_trackview.session().transport_rolling()) { if (!rec_active && - _trackview->session().record_status() == Session::Recording && - _trackview->get_diskstream()->record_enabled()) { + _trackview.session().record_status() == Session::Recording && + _trackview.get_diskstream()->record_enabled()) { if (use_rec_regions && rec_regions.size() == rec_rects.size()) { @@ -404,7 +400,7 @@ MidiStreamView::setup_rec_box () rec_data_ready_connections.clear(); // FIXME - boost::shared_ptr<MidiDiskstream> mds = boost::dynamic_pointer_cast<MidiDiskstream>(_trackview->get_diskstream()); + boost::shared_ptr<MidiDiskstream> mds = boost::dynamic_pointer_cast<MidiDiskstream>(_trackview.get_diskstream()); assert(mds); sources.push_back(mds->write_source()); @@ -415,14 +411,14 @@ MidiStreamView::setup_rec_box () jack_nframes_t start = 0; if (rec_regions.size() > 0) { - start = rec_regions.back().first->position() + _trackview->get_diskstream()->get_captured_frames(rec_regions.size()-1); + start = rec_regions.back().first->position() + _trackview.get_diskstream()->get_captured_frames(rec_regions.size()-1); } boost::shared_ptr<MidiRegion> region (boost::dynamic_pointer_cast<MidiRegion> (RegionFactory::create (sources, start, 1 , "", 0, Region::DefaultFlags, false))); assert(region); region->block_property_changes (); - region->set_position (_trackview->session().transport_frame(), this); + region->set_position (_trackview.session().transport_frame(), this); rec_regions.push_back (make_pair(region, (RegionView*)0)); // rec regions are destroyed in setup_rec_box @@ -432,14 +428,14 @@ MidiStreamView::setup_rec_box () /* start a new rec box */ - boost::shared_ptr<MidiTrack> mt = _trackview->midi_track(); /* we know what it is already */ + boost::shared_ptr<MidiTrack> mt = _trackview.midi_track(); /* we know what it is already */ boost::shared_ptr<MidiDiskstream> ds = mt->midi_diskstream(); jack_nframes_t frame_pos = ds->current_capture_start (); - gdouble xstart = _trackview->editor().frame_to_pixel (frame_pos); + gdouble xstart = _trackview.editor().frame_to_pixel (frame_pos); gdouble xend; uint32_t fill_color; - assert(_trackview->midi_track()->mode() == Normal); + assert(_trackview.midi_track()->mode() == Normal); xend = xstart; fill_color = ARDOUR_UI::config()->canvasvar_RecordingRect.get(); @@ -448,14 +444,14 @@ MidiStreamView::setup_rec_box () rec_rect->property_x1() = xstart; rec_rect->property_y1() = 1.0; rec_rect->property_x2() = xend; - rec_rect->property_y2() = (double) _trackview->current_height() - 1; + rec_rect->property_y2() = (double) _trackview.current_height() - 1; rec_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_RecordingRect.get(); rec_rect->property_fill_color_rgba() = fill_color; rec_rect->lower_to_bottom(); RecBoxInfo recbox; recbox.rectangle = rec_rect; - recbox.start = _trackview->session().transport_frame(); + recbox.start = _trackview.session().transport_frame(); recbox.length = 0; rec_rects.push_back (recbox); @@ -466,8 +462,8 @@ MidiStreamView::setup_rec_box () rec_active = true; } else if (rec_active && - (_trackview->session().record_status() != Session::Recording || - !_trackview->get_diskstream()->record_enabled())) { + (_trackview.session().record_status() != Session::Recording || + !_trackview.get_diskstream()->record_enabled())) { screen_update_connection.disconnect(); rec_active = false; @@ -561,7 +557,7 @@ MidiStreamView::update_rec_regions (boost::shared_ptr<MidiModel> data, nframes_t if (nlen != region->length()) { region->freeze (); - region->set_position (_trackview->get_diskstream()->get_capture_start_frame(n), this); + region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this); region->set_length (start + dur - region->position(), this); region->thaw ("updated"); @@ -573,7 +569,7 @@ MidiStreamView::update_rec_regions (boost::shared_ptr<MidiModel> data, nframes_t /* also update rect */ ArdourCanvas::SimpleRect * rect = rec_rects[n].rectangle; - gdouble xend = _trackview->editor().frame_to_pixel (region->position() + region->length()); + gdouble xend = _trackview.editor().frame_to_pixel (region->position() + region->length()); rect->property_x2() = xend; /* draw events */ @@ -610,14 +606,14 @@ MidiStreamView::update_rec_regions (boost::shared_ptr<MidiModel> data, nframes_t } else { - nframes_t nlen = _trackview->get_diskstream()->get_captured_frames(n); + nframes_t nlen = _trackview.get_diskstream()->get_captured_frames(n); if (nlen != region->length()) { if (region->source_length(0) >= region->position() + nlen) { region->freeze (); - region->set_position (_trackview->get_diskstream()->get_capture_start_frame(n), this); + region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this); region->set_length (nlen, this); region->thaw ("updated"); @@ -658,12 +654,12 @@ void MidiStreamView::color_handler () { //case cMidiTrackBase: - if (_trackview->is_midi_track()) { + if (_trackview.is_midi_track()) { //canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiTrackBase.get(); } //case cMidiBusBase: - if (!_trackview->is_midi_track()) { + if (!_trackview.is_midi_track()) { //canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiBusBase.get();; } } diff --git a/gtk2_ardour/midi_streamview.h b/gtk2_ardour/midi_streamview.h index 925843075b..2b7a7b02fa 100644 --- a/gtk2_ardour/midi_streamview.h +++ b/gtk2_ardour/midi_streamview.h @@ -54,7 +54,7 @@ class Selection; class MidiStreamView : public StreamView { public: - MidiStreamView (MidiTimeAxisViewPtr); + MidiStreamView (MidiTimeAxisView&); ~MidiStreamView (); void set_selected_regionviews (RegionSelection&); @@ -79,7 +79,7 @@ class MidiStreamView : public StreamView void redisplay_diskstream (); inline double contents_height() const - { return (_trackview->current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 2); } + { return (_trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE - 2); } inline double note_to_y(uint8_t note) const { return contents_height() diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc index 9dd23d5658..c8cd5fe464 100644 --- a/gtk2_ardour/midi_time_axis.cc +++ b/gtk2_ardour/midi_time_axis.cc @@ -89,7 +89,7 @@ static const uint32_t MIDI_CONTROLS_BOX_MIN_HEIGHT = 162; static const uint32_t KEYBOARD_MIN_HEIGHT = 140; MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess, - boost::shared_ptr<Route> rt, Canvas& canvas) + boost::shared_ptr<Route> rt, Canvas& canvas) : AxisView(sess) // virtually inherited , RouteTimeAxisView(ed, sess, rt, canvas) , _ignore_signals(false) @@ -103,27 +103,9 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess, , _channel_color_mode_item(0) , _track_color_mode_item(0) { - -} - - -MidiTimeAxisViewPtr -MidiTimeAxisView::create (PublicEditor& ed, Session& sess, - boost::shared_ptr<Route> rt, Canvas& canvas) -{ - MidiTimeAxisViewPtr v (new MidiTimeAxisView (ed, sess, rt, canvas)); - v->init (ed, sess, rt, canvas); - return v; -} - - -void -MidiTimeAxisView::init (PublicEditor& ed, Session& sess, - boost::shared_ptr<Route> rt, Canvas& canvas) -{ subplugin_menu.set_name ("ArdourContextMenu"); - _view = new MidiStreamView (boost::dynamic_pointer_cast<MidiTimeAxisView> (shared_from_this ())); + _view = new MidiStreamView (*this); ignore_toggle = false; @@ -528,16 +510,13 @@ MidiTimeAxisView::create_automation_child (const Evoral::Parameter& param, bool assert(c); - boost::shared_ptr<AutomationTimeAxisView> track = - AutomationTimeAxisView::create ( - _session, + boost::shared_ptr<AutomationTimeAxisView> track(new AutomationTimeAxisView (_session, _route, boost::shared_ptr<ARDOUR::Automatable>(), c, _editor, - shared_from_this (), + *this, true, parent_canvas, - _route->describe_parameter(param) - ); + _route->describe_parameter(param))); add_automation_child(param, track, show); } diff --git a/gtk2_ardour/midi_time_axis.h b/gtk2_ardour/midi_time_axis.h index b9a4f57821..acf9c32ea5 100644 --- a/gtk2_ardour/midi_time_axis.h +++ b/gtk2_ardour/midi_time_axis.h @@ -57,9 +57,7 @@ class PianoRollHeader; class MidiTimeAxisView : public RouteTimeAxisView { public: - static MidiTimeAxisViewPtr - create (PublicEditor&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, ArdourCanvas::Canvas& canvas); - + MidiTimeAxisView (PublicEditor&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, ArdourCanvas::Canvas& canvas); virtual ~MidiTimeAxisView (); MidiStreamView* midi_view(); @@ -90,10 +88,7 @@ class MidiTimeAxisView : public RouteTimeAxisView private: sigc::signal<void, std::string, std::string> _midi_patch_settings_changed; - - MidiTimeAxisView (PublicEditor&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, ArdourCanvas::Canvas& canvas); - void init (PublicEditor&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, ArdourCanvas::Canvas& canvas); - + void model_changed(); void custom_device_mode_changed(); diff --git a/gtk2_ardour/piano_roll_header.cc b/gtk2_ardour/piano_roll_header.cc index e148c55604..e946aa3dfb 100644 --- a/gtk2_ardour/piano_roll_header.cc +++ b/gtk2_ardour/piano_roll_header.cc @@ -646,7 +646,7 @@ PianoRollHeader::on_size_allocate(Gtk::Allocation& a) void PianoRollHeader::send_note_on(uint8_t note) { - boost::shared_ptr<ARDOUR::MidiTrack> track = _view.trackview()->midi_track(); + boost::shared_ptr<ARDOUR::MidiTrack> track = _view.trackview().midi_track(); //cerr << "note on: " << (int) note << endl; @@ -662,7 +662,7 @@ PianoRollHeader::send_note_on(uint8_t note) void PianoRollHeader::send_note_off(uint8_t note) { - boost::shared_ptr<ARDOUR::MidiTrack> track = _view.trackview()->midi_track(); + boost::shared_ptr<ARDOUR::MidiTrack> track = _view.trackview().midi_track(); if (track) { _event[0] = MIDI_CMD_NOTE_OFF; diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 2a03d4d010..83aa91e1ae 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -197,7 +197,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual gulong frame_to_pixel (nframes64_t frame) const = 0; virtual Selection& get_selection () const = 0; virtual Selection& get_cut_buffer () const = 0; - virtual bool extend_selection_to_track (TimeAxisViewPtr) = 0; + virtual bool extend_selection_to_track (TimeAxisView&) = 0; virtual void play_selection () = 0; virtual void set_show_measures (bool yn) = 0; virtual bool show_measures () const = 0; @@ -219,13 +219,13 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual gdouble get_current_zoom () const = 0; virtual PlaylistSelector& playlist_selector() const = 0; virtual void clear_playlist (boost::shared_ptr<ARDOUR::Playlist>) = 0; - virtual void new_playlists (boost::weak_ptr<TimeAxisView>) = 0; - virtual void copy_playlists (boost::weak_ptr<TimeAxisView>) = 0; - virtual void clear_playlists (boost::weak_ptr<TimeAxisView>) = 0; + virtual void new_playlists (TimeAxisView*) = 0; + virtual void copy_playlists (TimeAxisView*) = 0; + virtual void clear_playlists (TimeAxisView*) = 0; virtual void select_all_tracks () = 0; - virtual void set_selected_track (TimeAxisViewPtr, Selection::Operation op = Selection::Set, bool no_remove = false) = 0; - virtual void set_selected_mixer_strip (TimeAxisViewPtr) = 0; - virtual void hide_track_in_display (TimeAxisViewPtr tv, bool temporary = false) = 0; + virtual void set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove = false) = 0; + virtual void set_selected_mixer_strip (TimeAxisView&) = 0; + virtual void hide_track_in_display (TimeAxisView& tv, bool temporary = false) = 0; /** Set whether the editor should follow the playhead. * @param yn true to follow playhead, otherwise false. @@ -243,7 +243,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual double get_physical_screen_width() const = 0; virtual void ensure_float (Gtk::Window&) = 0; virtual void show_window () = 0; - virtual TrackViewList* get_valid_views (TimeAxisViewPtr, ARDOUR::RouteGroup* grp = 0) = 0; + virtual TrackViewList* get_valid_views (TimeAxisView*, ARDOUR::RouteGroup* grp = 0) = 0; virtual nframes64_t leftmost_position() const = 0; virtual nframes64_t current_page_frames() const = 0; virtual void temporal_zoom_step (bool coarser) = 0; @@ -260,18 +260,18 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual void toggle_meter_updating() = 0; virtual void split_region_at_points (boost::shared_ptr<ARDOUR::Region>, ARDOUR::AnalysisFeatureList&, bool can_ferret) = 0; virtual void mouse_add_new_marker (nframes64_t where, bool is_cd=false, bool is_xrun=false) = 0; - virtual void foreach_time_axis_view (sigc::slot<void,TimeAxisViewPtr>) = 0; - virtual void add_to_idle_resize (TimeAxisViewPtr, int32_t) = 0; + virtual void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>) = 0; + virtual void add_to_idle_resize (TimeAxisView*, int32_t) = 0; #ifdef WITH_CMT virtual void add_imageframe_time_axis(const std::string & track_name, void*) = 0; - virtual void add_imageframe_marker_time_axis(const std::string & track_name, TimeAxisViewPtr marked_track, void*) = 0; + virtual void add_imageframe_marker_time_axis(const std::string & track_name, TimeAxisView* marked_track, void*) = 0; virtual void connect_to_image_compositor() = 0; virtual void scroll_timeaxis_to_imageframe_item(const TimeAxisViewItem* item) = 0; - virtual TimeAxisViewPtr get_named_time_axis(const std::string & name) = 0; + virtual TimeAxisView* get_named_time_axis(const std::string & name) = 0; #endif - virtual RouteTimeAxisViewPtr get_route_view_by_id (PBD::ID& id) = 0; + virtual RouteTimeAxisView* get_route_view_by_id (PBD::ID& id) = 0; virtual void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&, ARDOUR::RouteGroup::Property) const = 0; @@ -298,12 +298,12 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual bool canvas_region_view_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0; virtual bool canvas_region_view_name_highlight_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0; virtual bool canvas_region_view_name_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0; - virtual bool canvas_stream_view_event (GdkEvent* event, ArdourCanvas::Item*, boost::weak_ptr<TimeAxisView>) = 0; + virtual bool canvas_stream_view_event (GdkEvent* event, ArdourCanvas::Item*, RouteTimeAxisView*) = 0; virtual bool canvas_marker_event (GdkEvent* event, ArdourCanvas::Item*, Marker*) = 0; virtual bool canvas_zoom_rect_event (GdkEvent* event, ArdourCanvas::Item*) = 0; virtual bool canvas_tempo_marker_event (GdkEvent* event, ArdourCanvas::Item*, TempoMarker*) = 0; virtual bool canvas_meter_marker_event (GdkEvent* event, ArdourCanvas::Item*, MeterMarker*) = 0; - virtual bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, boost::weak_ptr<AutomationTimeAxisView>) = 0; + virtual bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*) = 0; virtual bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0; virtual bool canvas_meter_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0; diff --git a/gtk2_ardour/region_gain_line.cc b/gtk2_ardour/region_gain_line.cc index bce3fb21fe..48bc7e7f4b 100644 --- a/gtk2_ardour/region_gain_line.cc +++ b/gtk2_ardour/region_gain_line.cc @@ -54,7 +54,7 @@ AudioRegionGainLine::start_drag (ControlPoint* cp, nframes_t x, float fraction) { AutomationLine::start_drag (cp, x, fraction); if (!rv.audio_region()->envelope_active()) { - trackview->session().add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), &rv.audio_region()->get_state(), 0)); + trackview.session().add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), &rv.audio_region()->get_state(), 0)); rv.audio_region()->set_envelope_active(false); } } @@ -67,21 +67,21 @@ AudioRegionGainLine::remove_point (ControlPoint& cp) model_representation (cp, mr); - trackview->editor().current_session()->begin_reversible_command (_("remove control point")); + trackview.editor().current_session()->begin_reversible_command (_("remove control point")); XMLNode &before = alist->get_state(); if (!rv.audio_region()->envelope_active()) { XMLNode ®ion_before = rv.audio_region()->get_state(); rv.audio_region()->set_envelope_active(true); XMLNode ®ion_after = rv.audio_region()->get_state(); - trackview->session().add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), ®ion_before, ®ion_after)); + trackview.session().add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), ®ion_before, ®ion_after)); } alist->erase (mr.start, mr.end); - trackview->editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), &before, &alist->get_state())); - trackview->editor().current_session()->commit_reversible_command (); - trackview->editor().current_session()->set_dirty (); + trackview.editor().current_session()->add_command (new MementoCommand<AutomationList>(*alist.get(), &before, &alist->get_state())); + trackview.editor().current_session()->commit_reversible_command (); + trackview.editor().current_session()->set_dirty (); } void @@ -89,7 +89,7 @@ AudioRegionGainLine::end_drag (ControlPoint* cp) { if (!rv.audio_region()->envelope_active()) { rv.audio_region()->set_envelope_active(true); - trackview->session().add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), 0, &rv.audio_region()->get_state())); + trackview.session().add_command(new MementoCommand<AudioRegion>(*(rv.audio_region().get()), 0, &rv.audio_region()->get_state())); } AutomationLine::end_drag(cp); diff --git a/gtk2_ardour/region_selection.cc b/gtk2_ardour/region_selection.cc index 0970e435b1..13e2bdb7f4 100644 --- a/gtk2_ardour/region_selection.cc +++ b/gtk2_ardour/region_selection.cc @@ -253,10 +253,10 @@ struct RegionSortByTrack { /* really, track and position */ - if (a->get_trackview()->order() == b->get_trackview()->order()) { + if (a->get_trackview().order() == b->get_trackview().order()) { return a->region()->position() < b->region()->position(); } else { - return a->get_trackview()->order() < b->get_trackview()->order(); + return a->get_trackview().order() < b->get_trackview().order(); } } }; @@ -295,10 +295,10 @@ RegionSelection::sort_by_position_and_track () * @return true if any of the selection's regions are on tv. */ bool -RegionSelection::involves (TimeAxisViewPtr tv) const +RegionSelection::involves (const TimeAxisView& tv) const { for (RegionSelection::const_iterator i = begin(); i != end(); ++i) { - if ((*i)->get_trackview() == tv) { + if (&(*i)->get_trackview() == &tv) { return true; } } diff --git a/gtk2_ardour/region_selection.h b/gtk2_ardour/region_selection.h index c89bae70e7..305fc69afd 100644 --- a/gtk2_ardour/region_selection.h +++ b/gtk2_ardour/region_selection.h @@ -23,7 +23,6 @@ #include <list> #include <sigc++/signal.h> #include "ardour/types.h" -#include "shared_ptrs.h" class RegionView; class TimeAxisView; @@ -43,7 +42,7 @@ class RegionSelection : public std::list<RegionView*>, public sigc::trackable void sort_by_position_and_track (); bool contains (RegionView*) const; - bool involves (TimeAxisViewPtr) const; + bool involves (const TimeAxisView&) const; void clear_all(); diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index de99e3dfac..85d59a93b1 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -61,7 +61,7 @@ static const int32_t sync_mark_width = 9; sigc::signal<void,RegionView*> RegionView::RegionViewGoingAway; RegionView::RegionView (ArdourCanvas::Group* parent, - TimeAxisViewPtr tv, + TimeAxisView& tv, boost::shared_ptr<ARDOUR::Region> r, double spu, Gdk::Color const & basic_color) @@ -115,7 +115,7 @@ RegionView::RegionView (const RegionView& other, boost::shared_ptr<Region> other } RegionView::RegionView (ArdourCanvas::Group* parent, - TimeAxisViewPtr tv, + TimeAxisView& tv, boost::shared_ptr<ARDOUR::Region> r, double spu, Gdk::Color const & basic_color, @@ -163,7 +163,7 @@ RegionView::init (Gdk::Color const & basic_color, bool wfd) if (wfd) _enable_display = true; - set_height (trackview->current_height()); + set_height (trackview.current_height()); _region->StateChanged.connect (mem_fun(*this, &RegionView::region_changed)); @@ -496,7 +496,7 @@ RegionView::region_sync_changed () points.clear (); points.push_back (Gnome::Art::Point (offset, 0)); - points.push_back (Gnome::Art::Point (offset, trackview->current_height() - NAME_HIGHLIGHT_SIZE)); + points.push_back (Gnome::Art::Point (offset, trackview.current_height() - NAME_HIGHLIGHT_SIZE)); sync_line->property_points().set_value (points); sync_line->show (); @@ -521,10 +521,10 @@ RegionView::move (double x_delta, double y_delta) } void -RegionView::remove_ghost_in (TimeAxisViewPtr tv) +RegionView::remove_ghost_in (TimeAxisView& tv) { for (vector<GhostRegion*>::iterator i = ghosts.begin(); i != ghosts.end(); ++i) { - if ((*i)->trackview == tv) { + if (&(*i)->trackview == &tv) { delete *i; break; } @@ -611,14 +611,14 @@ RegionView::update_coverage_frames (LayerDisplay d) /* finish off any old rect, if required */ if (cr && me != new_me) { - cr->property_x2() = trackview->editor().frame_to_pixel (t - position); + cr->property_x2() = trackview.editor().frame_to_pixel (t - position); } /* start off any new rect, if required */ if (cr == 0 || me != new_me) { cr = new ArdourCanvas::SimpleRect (*group); _coverage_frames.push_back (cr); - cr->property_x1() = trackview->editor().frame_to_pixel (t - position); + cr->property_x1() = trackview.editor().frame_to_pixel (t - position); cr->property_y1() = 1; cr->property_y2() = _height + 1; cr->property_outline_pixels() = 0; @@ -636,6 +636,6 @@ RegionView::update_coverage_frames (LayerDisplay d) if (cr) { /* finish off the last rectangle */ - cr->property_x2() = trackview->editor().frame_to_pixel (end - position); + cr->property_x2() = trackview.editor().frame_to_pixel (end - position); } } diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index df62cf9b6e..98329ee77b 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -42,7 +42,7 @@ class RegionView : public TimeAxisViewItem { public: RegionView (ArdourCanvas::Group* parent, - TimeAxisViewPtr time_view, + TimeAxisView& time_view, boost::shared_ptr<ARDOUR::Region> region, double samples_per_unit, Gdk::Color const & basic_color); @@ -77,8 +77,8 @@ class RegionView : public TimeAxisViewItem virtual void region_changed (ARDOUR::Change); - virtual GhostRegion* add_ghost (TimeAxisViewPtr) = 0; - void remove_ghost_in (TimeAxisViewPtr); + virtual GhostRegion* add_ghost (TimeAxisView&) = 0; + void remove_ghost_in (TimeAxisView&); void remove_ghost (GhostRegion*); uint32_t get_fill_color (); @@ -97,7 +97,7 @@ class RegionView : public TimeAxisViewItem * to the TimeAxisViewItem parent class */ RegionView (ArdourCanvas::Group *, - TimeAxisViewPtr, + TimeAxisView&, boost::shared_ptr<ARDOUR::Region>, double samples_per_unit, Gdk::Color const & basic_color, diff --git a/gtk2_ardour/rhythm_ferret.cc b/gtk2_ardour/rhythm_ferret.cc index 2e266e1598..aeaff98a54 100644 --- a/gtk2_ardour/rhythm_ferret.cc +++ b/gtk2_ardour/rhythm_ferret.cc @@ -260,7 +260,7 @@ RhythmFerret::run_analysis () } for (RegionSelection::iterator i = regions.begin(); i != regions.end(); ++i) { - (*i)->get_time_axis_view()->show_feature_lines (current_results); + (*i)->get_time_axis_view().show_feature_lines (current_results); } } @@ -399,7 +399,7 @@ RhythmFerret::do_split_action () tmp = i; ++tmp; - (*i)->get_time_axis_view()->hide_feature_lines (); + (*i)->get_time_axis_view().hide_feature_lines (); editor.split_region_at_points ((*i)->region(), current_results, false); @@ -418,9 +418,9 @@ RhythmFerret::set_session (Session* s) current_results.clear (); } -static void hide_time_axis_features (TimeAxisViewPtr tav) +static void hide_time_axis_features (TimeAxisView& tav) { - tav->hide_feature_lines (); + tav.hide_feature_lines (); } void diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 876bc5d13d..ebc4a350e6 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -102,7 +102,7 @@ RouteTimeAxisView::setup_slider_pix () RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::shared_ptr<Route> rt, Canvas& canvas) : AxisView(sess) , RouteUI(rt, sess) - , TimeAxisView (sess, ed, TimeAxisViewPtr (), canvas) + , TimeAxisView(sess,ed,(TimeAxisView*) 0, canvas) , parent_canvas (canvas) , button_table (3, 3) , route_group_button (_("g")) @@ -1173,7 +1173,7 @@ RouteTimeAxisView::selection_click (GdkEventButton* ev) if (Keyboard::modifier_state_equals (ev->state, (Keyboard::TertiaryModifier|Keyboard::PrimaryModifier))) { /* special case: select/deselect all tracks */ - if (_editor.get_selection().selected (shared_from_this ())) { + if (_editor.get_selection().selected (this)) { _editor.get_selection().clear_tracks (); } else { _editor.select_all_tracks (); @@ -1182,7 +1182,7 @@ RouteTimeAxisView::selection_click (GdkEventButton* ev) return; } - PublicEditor::TrackViewList* tracks = _editor.get_valid_views (shared_from_this(), _route->route_group()); + PublicEditor::TrackViewList* tracks = _editor.get_valid_views (this, _route->route_group()); switch (Keyboard::selection_type (ev->state)) { case Selection::Toggle: @@ -1199,7 +1199,7 @@ RouteTimeAxisView::selection_click (GdkEventButton* ev) _editor.get_selection().add (*tracks); } else { /* extend to the single track */ - _editor.extend_selection_to_track (tracks->front()); + _editor.extend_selection_to_track (*tracks->front()); } break; @@ -1364,7 +1364,7 @@ RouteTimeAxisView::hide_click () // LAME fix for hide_button refresh fix hide_button.set_sensitive(false); - _editor.hide_track_in_display (shared_from_this ()); + _editor.hide_track_in_display (*this); hide_button.set_sensitive(true); } @@ -1532,21 +1532,19 @@ RouteTimeAxisView::build_playlist_menu (Gtk::Menu * menu) playlist_items.push_back (MenuElem (_("Rename"), mem_fun(*this, &RouteTimeAxisView::rename_current_playlist))); playlist_items.push_back (SeparatorElem()); - boost::weak_ptr<TimeAxisView> v (shared_from_this ()); - if (!route_group() || !route_group()->is_active()) { - playlist_items.push_back (MenuElem (_("New"), bind(mem_fun(_editor, &PublicEditor::new_playlists), v))); - playlist_items.push_back (MenuElem (_("New Copy"), bind(mem_fun(_editor, &PublicEditor::copy_playlists), v))); + playlist_items.push_back (MenuElem (_("New"), bind(mem_fun(_editor, &PublicEditor::new_playlists), this))); + playlist_items.push_back (MenuElem (_("New Copy"), bind(mem_fun(_editor, &PublicEditor::copy_playlists), this))); } else { // Use a label which tells the user what is happening - playlist_items.push_back (MenuElem (_("New Take"), bind(mem_fun(_editor, &PublicEditor::new_playlists), v))); - playlist_items.push_back (MenuElem (_("Copy Take"), bind(mem_fun(_editor, &PublicEditor::copy_playlists), v))); + playlist_items.push_back (MenuElem (_("New Take"), bind(mem_fun(_editor, &PublicEditor::new_playlists), this))); + playlist_items.push_back (MenuElem (_("Copy Take"), bind(mem_fun(_editor, &PublicEditor::copy_playlists), this))); } playlist_items.push_back (SeparatorElem()); - playlist_items.push_back (MenuElem (_("Clear Current"), bind(mem_fun(_editor, &PublicEditor::clear_playlists), v))); + playlist_items.push_back (MenuElem (_("Clear Current"), bind(mem_fun(_editor, &PublicEditor::clear_playlists), this))); playlist_items.push_back (SeparatorElem()); playlist_items.push_back (MenuElem(_("Select from all ..."), mem_fun(*this, &RouteTimeAxisView::show_playlist_selector))); @@ -1910,10 +1908,9 @@ RouteTimeAxisView::add_processor_automation_curve (boost::shared_ptr<Processor> boost::shared_ptr<AutomationControl> control = boost::dynamic_pointer_cast<AutomationControl>(processor->data().control(what, true)); - pan->view = AutomationTimeAxisView::create ( - _session, _route, processor, control, - _editor, shared_from_this(), false, parent_canvas, name, state_name - ); + pan->view = boost::shared_ptr<AutomationTimeAxisView>( + new AutomationTimeAxisView (_session, _route, processor, control, + _editor, *this, false, parent_canvas, name, state_name)); pan->view->Hiding.connect (bind (mem_fun(*this, &RouteTimeAxisView::processor_automation_track_hidden), pan, processor)); @@ -2293,7 +2290,7 @@ RouteTimeAxisView::build_underlay_menu(Gtk::Menu* parent_menu) { parent_items.push_back (MenuElem (_("Underlays"), *gs_menu)); for(UnderlayList::iterator it = _underlay_streams.begin(); it != _underlay_streams.end(); ++it) { - gs_items.push_back(MenuElem(string_compose(_("Remove \"%1\""), (*it)->trackview()->name()), + gs_items.push_back(MenuElem(string_compose(_("Remove \"%1\""), (*it)->trackview().name()), bind(mem_fun(*this, &RouteTimeAxisView::remove_underlay), *it))); } } @@ -2321,7 +2318,7 @@ RouteTimeAxisView::set_underlay_state() if (prop) { PBD::ID id (prop->value()); - RouteTimeAxisViewPtr v = _editor.get_route_view_by_id (id); + RouteTimeAxisView* v = _editor.get_route_view_by_id (id); if (v) { add_underlay(v->view(), false); @@ -2339,16 +2336,16 @@ RouteTimeAxisView::add_underlay(StreamView* v, bool update_xml) return; } - RouteTimeAxisViewPtr other = v->trackview(); + RouteTimeAxisView& other = v->trackview(); - if (find (_underlay_streams.begin(), _underlay_streams.end(), v) == _underlay_streams.end()) { - if (find (other->_underlay_mirrors.begin(), other->_underlay_mirrors.end(), this) != other->_underlay_mirrors.end()) { + if(find(_underlay_streams.begin(), _underlay_streams.end(), v) == _underlay_streams.end()) { + if(find(other._underlay_mirrors.begin(), other._underlay_mirrors.end(), this) != other._underlay_mirrors.end()) { fatal << _("programming error: underlay reference pointer pairs are inconsistent!") << endmsg; /*NOTREACHED*/ } _underlay_streams.push_back(v); - other->_underlay_mirrors.push_back(this); + other._underlay_mirrors.push_back(this); v->foreach_regionview(mem_fun(*this, &RouteTimeAxisView::add_ghost)); @@ -2360,7 +2357,7 @@ RouteTimeAxisView::add_underlay(StreamView* v, bool update_xml) XMLNode* node = underlay_xml_node->add_child("Underlay"); XMLProperty* prop = node->add_property("id"); - prop->set_value(v->trackview()->route()->id().to_s()); + prop->set_value(v->trackview().route()->id().to_s()); } } } @@ -2373,12 +2370,12 @@ RouteTimeAxisView::remove_underlay(StreamView* v) } UnderlayList::iterator it = find(_underlay_streams.begin(), _underlay_streams.end(), v); - RouteTimeAxisViewPtr other = v->trackview(); + RouteTimeAxisView& other = v->trackview(); if(it != _underlay_streams.end()) { - UnderlayMirrorList::iterator gm = find (other->_underlay_mirrors.begin(), other->_underlay_mirrors.end(), this); + UnderlayMirrorList::iterator gm = find(other._underlay_mirrors.begin(), other._underlay_mirrors.end(), this); - if (gm == other->_underlay_mirrors.end()) { + if(gm == other._underlay_mirrors.end()) { fatal << _("programming error: underlay reference pointer pairs are inconsistent!") << endmsg; /*NOTREACHED*/ } @@ -2386,10 +2383,10 @@ RouteTimeAxisView::remove_underlay(StreamView* v) v->foreach_regionview(mem_fun(*this, &RouteTimeAxisView::remove_ghost)); _underlay_streams.erase(it); - other->_underlay_mirrors.erase(gm); + other._underlay_mirrors.erase(gm); - if (underlay_xml_node) { - underlay_xml_node->remove_nodes_and_delete("id", v->trackview()->route()->id().to_s()); + if(underlay_xml_node) { + underlay_xml_node->remove_nodes_and_delete("id", v->trackview().route()->id().to_s()); } } } diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index c957e4a244..2eafcf220c 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -112,7 +112,7 @@ Selection::clear_tracks () void Selection::clear_time () { - time.track.reset (); + time.track = 0; time.group = 0; time.clear(); @@ -170,22 +170,21 @@ Selection::toggle (boost::shared_ptr<Playlist> pl) } void -Selection::toggle (const list<TimeAxisViewPtr>& track_list) +Selection::toggle (const list<TimeAxisView*>& track_list) { - for (list<TimeAxisViewPtr>::const_iterator i = track_list.begin(); i != track_list.end(); ++i) { + for (list<TimeAxisView*>::const_iterator i = track_list.begin(); i != track_list.end(); ++i) { toggle ( (*i) ); } } void -Selection::toggle (TimeAxisViewPtr track) +Selection::toggle (TimeAxisView* track) { TrackSelection::iterator i; if ((i = find (tracks.begin(), tracks.end(), track)) == tracks.end()) { - void (Selection::*pmf)(boost::weak_ptr<TimeAxisView>) = &Selection::remove; - boost::weak_ptr<TimeAxisView> w (track); - track->GoingAway.connect (sigc::bind (mem_fun (*this, pmf), w)); + void (Selection::*pmf)(TimeAxisView*) = &Selection::remove; + track->GoingAway.connect (sigc::bind (mem_fun (*this, pmf), track)); tracks.push_back (track); } else { tracks.erase (i); @@ -269,14 +268,13 @@ Selection::add (const list<boost::shared_ptr<Playlist> >& pllist) } void -Selection::add (const list<TimeAxisViewPtr>& track_list) +Selection::add (const list<TimeAxisView*>& track_list) { - list<TimeAxisViewPtr> added = tracks.add (track_list); + list<TimeAxisView*> added = tracks.add (track_list); - for (list<TimeAxisViewPtr>::const_iterator i = added.begin(); i != added.end(); ++i) { - void (Selection::*pmf)(boost::weak_ptr<TimeAxisView>) = &Selection::remove; - boost::weak_ptr<TimeAxisView> w (*i); - (*i)->GoingAway.connect (sigc::bind (mem_fun (*this, pmf), w)); + for (list<TimeAxisView*>::const_iterator i = added.begin(); i != added.end(); ++i) { + void (Selection::*pmf)(TimeAxisView*) = &Selection::remove; + (*i)->GoingAway.connect (sigc::bind (mem_fun (*this, pmf), (*i))); } if (!added.empty()) { @@ -285,10 +283,10 @@ Selection::add (const list<TimeAxisViewPtr>& track_list) } void -Selection::add (TimeAxisViewPtr track) +Selection::add (TimeAxisView* track) { if (find (tracks.begin(), tracks.end(), track) == tracks.end()) { - void (Selection::*pmf)(TimeAxisViewPtr) = &Selection::remove; + void (Selection::*pmf)(TimeAxisView*) = &Selection::remove; track->GoingAway.connect (sigc::bind (mem_fun (*this, pmf), track)); tracks.push_back (track); TracksChanged(); @@ -307,7 +305,7 @@ Selection::add (vector<RegionView*>& v) if (find (regions.begin(), regions.end(), (*i)) == regions.end()) { changed = regions.add ((*i)); if (Config->get_link_region_and_track_selection() && changed) { - add ((*i)->get_trackview()); + add (&(*i)->get_trackview()); } } } @@ -329,7 +327,7 @@ Selection::add (const RegionSelection& rs) if (find (regions.begin(), regions.end(), (*i)) == regions.end()) { changed = regions.add ((*i)); if (Config->get_link_region_and_track_selection() && changed) { - add ((*i)->get_trackview()); + add (&(*i)->get_trackview()); } } } @@ -345,7 +343,7 @@ Selection::add (RegionView* r) if (find (regions.begin(), regions.end(), r) == regions.end()) { regions.add (r); if (Config->get_link_region_and_track_selection()) { - add (r->get_trackview()); + add (&r->get_trackview()); } RegionsChanged (); } @@ -404,9 +402,9 @@ Selection::add (boost::shared_ptr<Evoral::ControlList> cl) } void -Selection::remove (TimeAxisViewPtr track) +Selection::remove (TimeAxisView* track) { - list<TimeAxisViewPtr>::iterator i; + list<TimeAxisView*>::iterator i; if ((i = find (tracks.begin(), tracks.end(), track)) != tracks.end()) { tracks.erase (i); TracksChanged(); @@ -414,22 +412,13 @@ Selection::remove (TimeAxisViewPtr track) } void -Selection::remove (boost::weak_ptr<TimeAxisView> w) -{ - boost::shared_ptr<TimeAxisView> t = w.lock (); - if (t) { - remove (t); - } -} - -void -Selection::remove (const list<TimeAxisViewPtr>& track_list) +Selection::remove (const list<TimeAxisView*>& track_list) { bool changed = false; - for (list<TimeAxisViewPtr>::const_iterator i = track_list.begin(); i != track_list.end(); ++i) { + for (list<TimeAxisView*>::const_iterator i = track_list.begin(); i != track_list.end(); ++i) { - list<TimeAxisViewPtr>::iterator x; + list<TimeAxisView*>::iterator x; if ((x = find (tracks.begin(), tracks.end(), (*i))) != tracks.end()) { tracks.erase (x); @@ -480,7 +469,7 @@ Selection::remove (RegionView* r) } if (Config->get_link_region_and_track_selection() && !regions.involves (r->get_trackview())) { - remove (r->get_trackview()); + remove (&r->get_trackview()); } } @@ -518,14 +507,14 @@ Selection::remove (boost::shared_ptr<ARDOUR::AutomationList> ac) } void -Selection::set (TimeAxisViewPtr track) +Selection::set (TimeAxisView* track) { clear_tracks (); add (track); } void -Selection::set (const list<TimeAxisViewPtr>& track_list) +Selection::set (const list<TimeAxisView*>& track_list) { clear_tracks (); add (track_list); @@ -576,7 +565,7 @@ Selection::set (vector<RegionView*>& v) } long -Selection::set (TimeAxisViewPtr track, nframes_t start, nframes_t end) +Selection::set (TimeAxisView* track, nframes_t start, nframes_t end) { if ((start == 0 && end == 0) || end < start) { return 0; @@ -598,7 +587,7 @@ Selection::set (TimeAxisViewPtr track, nframes_t start, nframes_t end) time.track = track; time.group = track->route_group(); } else { - time.track.reset (); + time.track = 0; time.group = 0; } @@ -623,7 +612,7 @@ Selection::selected (Marker* m) } bool -Selection::selected (TimeAxisViewPtr tv) +Selection::selected (TimeAxisView* tv) { return find (tracks.begin(), tracks.end(), tv) != tracks.end(); } diff --git a/gtk2_ardour/selection.h b/gtk2_ardour/selection.h index ea36de246f..6107e2970a 100644 --- a/gtk2_ardour/selection.h +++ b/gtk2_ardour/selection.h @@ -97,7 +97,7 @@ class Selection : public sigc::trackable void dump_region_layers(); - bool selected (TimeAxisViewPtr); + bool selected (TimeAxisView*); bool selected (RegionView*); bool selected (Marker*); @@ -105,11 +105,11 @@ class Selection : public sigc::trackable void add (std::list<Selectable*>&); void toggle (std::list<Selectable*>&); - void set (TimeAxisViewPtr); - void set (const std::list<TimeAxisViewPtr>&); + void set (TimeAxisView*); + void set (const std::list<TimeAxisView*>&); void set (RegionView*, bool also_clear_tracks = true); void set (std::vector<RegionView*>&); - long set (TimeAxisViewPtr, nframes_t, nframes_t); + long set (TimeAxisView*, nframes_t, nframes_t); void set (boost::shared_ptr<Evoral::ControlList>); void set (boost::shared_ptr<ARDOUR::Playlist>); void set (const std::list<boost::shared_ptr<ARDOUR::Playlist> >&); @@ -117,8 +117,8 @@ class Selection : public sigc::trackable void set (Marker*); void set (const RegionSelection&); - void toggle (TimeAxisViewPtr); - void toggle (const std::list<TimeAxisViewPtr>&); + void toggle (TimeAxisView*); + void toggle (const std::list<TimeAxisView*>&); void toggle (RegionView*); void toggle (std::vector<RegionView*>&); long toggle (nframes_t, nframes_t); @@ -128,8 +128,8 @@ class Selection : public sigc::trackable void toggle (const std::vector<AutomationSelectable*>&); void toggle (Marker*); - void add (TimeAxisViewPtr); - void add (const std::list<TimeAxisViewPtr>&); + void add (TimeAxisView*); + void add (const std::list<TimeAxisView*>&); void add (RegionView*); void add (std::vector<RegionView*>&); long add (nframes_t, nframes_t); @@ -140,9 +140,8 @@ class Selection : public sigc::trackable void add (const std::list<Marker*>&); void add (const RegionSelection&); - void remove (TimeAxisViewPtr); - void remove (const std::list<TimeAxisViewPtr>&); - void remove (boost::weak_ptr<TimeAxisView>); + void remove (TimeAxisView*); + void remove (const std::list<TimeAxisView*>&); void remove (RegionView*); void remove (uint32_t selection_id); void remove (nframes_t, nframes_t); diff --git a/gtk2_ardour/shared_ptrs.h b/gtk2_ardour/shared_ptrs.h deleted file mode 100644 index a11f1e51b5..0000000000 --- a/gtk2_ardour/shared_ptrs.h +++ /dev/null @@ -1,25 +0,0 @@ -#include <boost/shared_ptr.hpp> - -class TimeAxisView; - -typedef boost::shared_ptr<TimeAxisView> TimeAxisViewPtr; -typedef boost::shared_ptr<const TimeAxisView> TimeAxisViewConstPtr; - -class RouteTimeAxisView; - -typedef boost::shared_ptr<RouteTimeAxisView> RouteTimeAxisViewPtr; -typedef boost::shared_ptr<const RouteTimeAxisView> RouteTimeAxisViewConstPtr; - -class AutomationTimeAxisView; - -typedef boost::shared_ptr<AutomationTimeAxisView> AutomationTimeAxisViewPtr; -typedef boost::shared_ptr<const AutomationTimeAxisView> AutomationTimeAxisViewConstPtr; - -class AudioTimeAxisView; - -typedef boost::shared_ptr<AudioTimeAxisView> AudioTimeAxisViewPtr; - -class MidiTimeAxisView; - -typedef boost::shared_ptr<MidiTimeAxisView> MidiTimeAxisViewPtr; -typedef boost::shared_ptr<const MidiTimeAxisView> MidiTimeAxisViewConstPtr; diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc index 3364acd092..35b8576a48 100644 --- a/gtk2_ardour/streamview.cc +++ b/gtk2_ardour/streamview.cc @@ -46,20 +46,20 @@ using namespace ARDOUR; using namespace PBD; using namespace Editing; -StreamView::StreamView (RouteTimeAxisViewPtr tv, ArdourCanvas::Group* group) +StreamView::StreamView (RouteTimeAxisView& tv, ArdourCanvas::Group* group) : _trackview (tv) , owns_canvas_group(group == 0) - , _background_group (new ArdourCanvas::Group (*_trackview->canvas_background())) - , canvas_group(group ? group : new ArdourCanvas::Group(*_trackview->canvas_display())) - , _samples_per_unit (_trackview->editor().get_current_zoom ()) + , _background_group (new ArdourCanvas::Group (*_trackview.canvas_background())) + , canvas_group(group ? group : new ArdourCanvas::Group(*_trackview.canvas_display())) + , _samples_per_unit (_trackview.editor().get_current_zoom ()) , rec_updating(false) , rec_active(false) - , use_rec_regions (tv->editor().show_waveforms_recording ()) - , region_color(_trackview->color()) + , use_rec_regions (tv.editor().show_waveforms_recording ()) + , region_color(_trackview.color()) , stream_base_color(0xFFFFFFFF) , _layers (1) , _layer_display (Overlaid) - , height(tv->height) + , height(tv.height) , last_rec_data_frame(0) { /* set_position() will position the group */ @@ -67,27 +67,26 @@ StreamView::StreamView (RouteTimeAxisViewPtr tv, ArdourCanvas::Group* group) canvas_rect = new ArdourCanvas::SimpleRect (*_background_group); canvas_rect->property_x1() = 0.0; canvas_rect->property_y1() = 0.0; - canvas_rect->property_x2() = _trackview->editor().get_physical_screen_width (); - canvas_rect->property_y2() = (double) tv->current_height(); + canvas_rect->property_x2() = _trackview.editor().get_physical_screen_width (); + canvas_rect->property_y2() = (double) tv.current_height(); canvas_rect->raise(1); // raise above tempo lines canvas_rect->property_outline_what() = (guint32) (0x2|0x8); // outline RHS and bottom - boost::weak_ptr<TimeAxisView> w (_trackview); canvas_rect->signal_event().connect (bind ( - mem_fun (_trackview->editor(), &PublicEditor::canvas_stream_view_event), - canvas_rect, w)); + mem_fun (_trackview.editor(), &PublicEditor::canvas_stream_view_event), + canvas_rect, &_trackview)); - if (_trackview->is_track()) { - _trackview->track()->DiskstreamChanged.connect ( + if (_trackview.is_track()) { + _trackview.track()->DiskstreamChanged.connect ( mem_fun (*this, &StreamView::diskstream_changed)); - _trackview->session().TransportStateChange.connect ( + _trackview.session().TransportStateChange.connect ( mem_fun (*this, &StreamView::transport_changed)); - _trackview->session().TransportLooped.connect ( + _trackview.session().TransportLooped.connect ( mem_fun (*this, &StreamView::transport_looped)); - _trackview->get_diskstream()->RecordEnableChanged.connect ( + _trackview.get_diskstream()->RecordEnableChanged.connect ( mem_fun (*this, &StreamView::rec_enable_changed)); - _trackview->session().RecordStateChanged.connect ( + _trackview.session().RecordStateChanged.connect ( mem_fun (*this, &StreamView::sess_rec_enable_changed)); } @@ -108,8 +107,8 @@ StreamView::~StreamView () void StreamView::attach () { - if (_trackview->is_track()) { - display_diskstream (_trackview->get_diskstream()); + if (_trackview.is_track()) { + display_diskstream (_trackview.get_diskstream()); } } @@ -160,8 +159,8 @@ StreamView::set_samples_per_unit (gdouble spp) for (vector<RecBoxInfo>::iterator xi = rec_rects.begin(); xi != rec_rects.end(); ++xi) { RecBoxInfo &recbox = (*xi); - gdouble xstart = _trackview->editor().frame_to_pixel (recbox.start); - gdouble xend = _trackview->editor().frame_to_pixel (recbox.start + recbox.length); + gdouble xstart = _trackview.editor().frame_to_pixel (recbox.start); + gdouble xend = _trackview.editor().frame_to_pixel (recbox.start + recbox.length); recbox.rectangle->property_x1() = xstart; recbox.rectangle->property_x2() = xend; @@ -373,7 +372,7 @@ StreamView::diskstream_changed () { boost::shared_ptr<Track> t; - if ((t = _trackview->track()) != 0) { + if ((t = _trackview.track()) != 0) { Gtkmm2ext::UI::instance()->call_slot (bind ( mem_fun (*this, &StreamView::display_diskstream), t->diskstream())); @@ -445,23 +444,23 @@ StreamView::update_rec_box () if (rec_active && rec_rects.size() > 0) { /* only update the last box */ RecBoxInfo & rect = rec_rects.back(); - nframes_t at = _trackview->get_diskstream()->current_capture_end(); + nframes_t at = _trackview.get_diskstream()->current_capture_end(); double xstart; double xend; - switch (_trackview->track()->mode()) { + switch (_trackview.track()->mode()) { case NonLayered: case Normal: rect.length = at - rect.start; - xstart = _trackview->editor().frame_to_pixel (rect.start); - xend = _trackview->editor().frame_to_pixel (at); + xstart = _trackview.editor().frame_to_pixel (rect.start); + xend = _trackview.editor().frame_to_pixel (at); break; case Destructive: rect.length = 2; - xstart = _trackview->editor().frame_to_pixel (_trackview->get_diskstream()->current_capture_start()); - xend = _trackview->editor().frame_to_pixel (at); + xstart = _trackview.editor().frame_to_pixel (_trackview.get_diskstream()->current_capture_start()); + xend = _trackview.editor().frame_to_pixel (at); break; } diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h index adf16e1a3e..07285d8a42 100644 --- a/gtk2_ardour/streamview.h +++ b/gtk2_ardour/streamview.h @@ -26,7 +26,6 @@ #include "enums.h" #include "simplerect.h" #include "canvas.h" -#include "shared_ptrs.h" namespace Gdk { class Color; @@ -59,8 +58,8 @@ class StreamView : public sigc::trackable public: virtual ~StreamView (); - RouteTimeAxisViewPtr trackview() { return _trackview; } - const RouteTimeAxisViewPtr trackview() const { return _trackview; } + RouteTimeAxisView& trackview() { return _trackview; } + const RouteTimeAxisView& trackview() const { return _trackview; } void attach (); @@ -113,7 +112,7 @@ public: sigc::signal<void> HeightChanged; protected: - StreamView (RouteTimeAxisViewPtr, ArdourCanvas::Group* group = NULL); + StreamView (RouteTimeAxisView&, ArdourCanvas::Group* group = NULL); void transport_changed(); void transport_looped(); @@ -138,7 +137,7 @@ protected: virtual void color_handler () = 0; - RouteTimeAxisViewPtr _trackview; + RouteTimeAxisView& _trackview; bool owns_canvas_group; ArdourCanvas::Group* _background_group; ArdourCanvas::Group* canvas_group; diff --git a/gtk2_ardour/tape_region_view.cc b/gtk2_ardour/tape_region_view.cc index 528eccb8a9..a10541ffc6 100644 --- a/gtk2_ardour/tape_region_view.cc +++ b/gtk2_ardour/tape_region_view.cc @@ -49,7 +49,7 @@ const TimeAxisViewItem::Visibility TapeAudioRegionView::default_tape_visibility TimeAxisViewItem::HideFrameRight | TimeAxisViewItem::FullWidthNameHighlight); -TapeAudioRegionView::TapeAudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisViewPtr tv, +TapeAudioRegionView::TapeAudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &tv, boost::shared_ptr<AudioRegion> r, double spu, Gdk::Color const & basic_color) diff --git a/gtk2_ardour/tape_region_view.h b/gtk2_ardour/tape_region_view.h index 93b37dfbce..8887281393 100644 --- a/gtk2_ardour/tape_region_view.h +++ b/gtk2_ardour/tape_region_view.h @@ -28,7 +28,7 @@ class TapeAudioRegionView : public AudioRegionView { public: TapeAudioRegionView (ArdourCanvas::Group *, - RouteTimeAxisViewPtr, + RouteTimeAxisView&, boost::shared_ptr<ARDOUR::AudioRegion>, double initial_samples_per_unit, Gdk::Color const & base_color); diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 1f50e93881..0ed3458d80 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -74,7 +74,7 @@ uint32_t TimeAxisView::hSmall = 0; bool TimeAxisView::need_size_info = true; int const TimeAxisView::_max_order = 512; -TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisViewPtr rent, Canvas& canvas) +TimeAxisView::TimeAxisView (ARDOUR::Session& sess, PublicEditor& ed, TimeAxisView* rent, Canvas& canvas) : AxisView (sess), controls_table (2, 8), _y_position (0), @@ -338,7 +338,7 @@ void TimeAxisView::selection_click (GdkEventButton* ev) { Selection::Operation op = Keyboard::selection_type (ev->state); - _editor.set_selected_track (shared_from_this (), op, false); + _editor.set_selected_track (*this, op, false); } void @@ -367,7 +367,7 @@ TimeAxisView::hide () /* if its hidden, it cannot be selected */ - _editor.get_selection().remove (shared_from_this ()); + _editor.get_selection().remove (this); Hiding (); } @@ -436,9 +436,9 @@ TimeAxisView::name_entry_key_release (GdkEventKey* ev) case GDK_ISO_Left_Tab: case GDK_Tab: name_entry_changed (); - allviews = _editor.get_valid_views (TimeAxisViewPtr ()); + allviews = _editor.get_valid_views (0); if (allviews != 0) { - i = find (allviews->begin(), allviews->end(), shared_from_this ()); + i = find (allviews->begin(), allviews->end(), this); if (ev->keyval == GDK_Tab) { if (i != allviews->end()) { do { @@ -564,8 +564,8 @@ TimeAxisView::conditionally_add_to_selection () { Selection& s (_editor.get_selection ()); - if (!s.selected (shared_from_this ())) { - _editor.set_selected_track (shared_from_this (), Selection::Set); + if (!s.selected (this)) { + _editor.set_selected_track (*this, Selection::Set); } } @@ -878,10 +878,12 @@ TimeAxisView::get_selection_rect (uint32_t id) return rect; } +struct null_deleter { void operator()(void const *) const {} }; + bool -TimeAxisView::is_child (TimeAxisViewPtr tav) +TimeAxisView::is_child (TimeAxisView* tav) { - return find (children.begin(), children.end(), tav) != children.end(); + return find (children.begin(), children.end(), boost::shared_ptr<TimeAxisView>(tav, null_deleter())) != children.end(); } void @@ -915,7 +917,7 @@ TimeAxisView::get_inverted_selectables (Selection& sel, list<Selectable*>& resul void TimeAxisView::add_ghost (RegionView* rv) { - GhostRegion* gr = rv->add_ghost (shared_from_this ()); + GhostRegion* gr = rv->add_ghost (*this); if(gr) { ghosts.push_back(gr); @@ -924,9 +926,8 @@ TimeAxisView::add_ghost (RegionView* rv) } void -TimeAxisView::remove_ghost (RegionView* rv) -{ - rv->remove_ghost_in (shared_from_this ()); +TimeAxisView::remove_ghost (RegionView* rv) { + rv->remove_ghost_in (*this); } void @@ -960,9 +961,9 @@ TimeAxisView::touched (double top, double bot) } void -TimeAxisView::set_parent (TimeAxisViewPtr p) +TimeAxisView::set_parent (TimeAxisView& p) { - parent = p; + parent = &p; } bool @@ -971,13 +972,17 @@ TimeAxisView::has_state () const return _has_state; } -TimeAxisViewPtr +TimeAxisView* TimeAxisView::get_parent_with_state () { - if (parent == 0 || parent->has_state()) { - return parent; + if (parent == 0) { + return 0; } + if (parent->has_state()) { + return parent; + } + return parent->get_parent_with_state (); } @@ -1189,11 +1194,11 @@ TimeAxisView::color_handler () * Layer index is the layer number if the TimeAxisView is valid and is in stacked * region display mode, otherwise 0. */ -std::pair<TimeAxisViewPtr, layer_t> +std::pair<TimeAxisView*, layer_t> TimeAxisView::covers_y_position (double y) { if (hidden()) { - return std::make_pair (TimeAxisViewPtr (), 0); + return std::make_pair ( (TimeAxisView *) 0, 0); } if (_y_position <= y && y < (_y_position + height)) { @@ -1210,18 +1215,18 @@ TimeAxisView::covers_y_position (double y) } } - return std::make_pair (shared_from_this (), l); + return std::make_pair (this, l); } for (Children::const_iterator i = children.begin(); i != children.end(); ++i) { - std::pair<TimeAxisViewPtr, int> const r = (*i)->covers_y_position (y); + std::pair<TimeAxisView*, int> const r = (*i)->covers_y_position (y); if (r.first) { return r; } } - return std::make_pair (TimeAxisViewPtr (), 0); + return std::make_pair ( (TimeAxisView *) 0, 0); } void @@ -1297,7 +1302,7 @@ TimeAxisView::resizer_motion (GdkEventMotion* ev) } int32_t const delta = (int32_t) floor (ev->y_root - _resize_drag_start); - _editor.add_to_idle_resize (shared_from_this (), delta); + _editor.add_to_idle_resize (this, delta); _resize_drag_start = ev->y_root; return true; @@ -1344,17 +1349,3 @@ TimeAxisView::resizer_expose (GdkEventExpose* event) return true; } -TimeAxisViewPtr -TimeAxisView::find_time_axis (TimeAxisView* v) -{ - Children::iterator i = children.begin (); - while (i != children.end() && i->get() != v) { - ++i; - } - - if (i == children.end()) { - return TimeAxisViewPtr (); - } - - return *i; -} diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h index c8dc6b1da0..486dc6404d 100644 --- a/gtk2_ardour/time_axis_view.h +++ b/gtk2_ardour/time_axis_view.h @@ -23,8 +23,6 @@ #include <vector> #include <list> -#include <boost/enable_shared_from_this.hpp> - #include <gtkmm/box.h> #include <gtkmm/frame.h> #include <gtkmm/drawingarea.h> @@ -46,7 +44,6 @@ #include "enums.h" #include "editing.h" #include "canvas.h" -#include "shared_ptrs.h" namespace ARDOUR { class Session; @@ -76,7 +73,7 @@ class StreamView; * This class provides the basic LHS controls and display methods. This should be * extended to create functional time-axis based views. */ -class TimeAxisView : public virtual AxisView, public PBD::Stateful, public boost::enable_shared_from_this<TimeAxisView> +class TimeAxisView : public virtual AxisView, public PBD::Stateful { private: enum NamePackingBits { @@ -92,7 +89,7 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful, public boost static uint32_t hSmaller; static uint32_t hSmall; - TimeAxisView(ARDOUR::Session& sess, PublicEditor& ed, TimeAxisViewPtr parent, ArdourCanvas::Canvas& canvas); + TimeAxisView(ARDOUR::Session& sess, PublicEditor& ed, TimeAxisView* parent, ArdourCanvas::Canvas& canvas); virtual ~TimeAxisView (); XMLNode& get_state (); @@ -156,7 +153,7 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful, public boost virtual void set_height (uint32_t h); void reset_height(); - std::pair<TimeAxisViewPtr, ARDOUR::layer_t> covers_y_position (double); + std::pair<TimeAxisView*, ARDOUR::layer_t> covers_y_position (double); /** * Steps through the defined heights for this TrackView. @@ -207,8 +204,8 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful, public boost expensive data loading/redisplay code in here. */ virtual void first_idle () {} - TimeAxisViewPtr get_parent () { return parent; } - void set_parent (TimeAxisViewPtr p); + TimeAxisView* get_parent () { return parent; } + void set_parent (TimeAxisView& p); bool has_state () const; /* call this on the parent */ @@ -217,8 +214,6 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful, public boost virtual LayerDisplay layer_display () const { return Overlaid; } virtual StreamView* view () const { return 0; } - - TimeAxisViewPtr find_time_axis (TimeAxisView *); typedef std::vector<boost::shared_ptr<TimeAxisView> > Children; @@ -298,16 +293,16 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful, public boost Gtk::Label name_label; - TimeAxisViewPtr parent; + TimeAxisView* parent; /** Find the parent with state */ - TimeAxisViewPtr get_parent_with_state(); + TimeAxisView* get_parent_with_state(); Children children; - bool is_child (TimeAxisViewPtr); + bool is_child (TimeAxisView*); - void remove_child (TimeAxisViewPtr); - void add_child (TimeAxisViewPtr); + void remove_child (boost::shared_ptr<TimeAxisView>); + void add_child (boost::shared_ptr<TimeAxisView>); /* selection display */ diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc index b494599d48..ed31104376 100644 --- a/gtk2_ardour/time_axis_view_item.cc +++ b/gtk2_ardour/time_axis_view_item.cc @@ -68,7 +68,7 @@ double TimeAxisViewItem::NAME_HIGHLIGHT_THRESH; * @param start the start point of this item * @param duration the duration of this item */ -TimeAxisViewItem::TimeAxisViewItem(const string & it_name, ArdourCanvas::Group& parent, TimeAxisViewPtr tv, double spu, Gdk::Color const & base_color, +TimeAxisViewItem::TimeAxisViewItem(const string & it_name, ArdourCanvas::Group& parent, TimeAxisView& tv, double spu, Gdk::Color const & base_color, nframes_t start, nframes_t duration, bool recording, Visibility vis) : trackview (tv), _recregion(recording) @@ -144,14 +144,14 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color const & ba warning << "Time Axis Item Duration == 0" << endl ; } - vestigial_frame = new ArdourCanvas::SimpleRect (*group, 0.0, 1.0, 2.0, trackview->current_height()); + vestigial_frame = new ArdourCanvas::SimpleRect (*group, 0.0, 1.0, 2.0, trackview.current_height()); vestigial_frame->hide (); vestigial_frame->property_outline_what() = 0xF; vestigial_frame->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_VestigialFrame.get(); vestigial_frame->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_VestigialFrame.get(); if (visibility & ShowFrame) { - frame = new ArdourCanvas::SimpleRect (*group, 0.0, 1.0, trackview->editor().frame_to_pixel(duration), trackview->current_height()); + frame = new ArdourCanvas::SimpleRect (*group, 0.0, 1.0, trackview.editor().frame_to_pixel(duration), trackview.current_height()); frame->property_outline_pixels() = 1; frame->property_outline_what() = 0xF; frame->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeAxisFrame.get(); @@ -180,9 +180,9 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color const & ba if (visibility & ShowNameHighlight) { if (visibility & FullWidthNameHighlight) { - name_highlight = new ArdourCanvas::SimpleRect (*group, 0.0, trackview->editor().frame_to_pixel(item_duration), trackview->current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE, trackview->current_height() - 1); + name_highlight = new ArdourCanvas::SimpleRect (*group, 0.0, trackview.editor().frame_to_pixel(item_duration), trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE, trackview.current_height() - 1); } else { - name_highlight = new ArdourCanvas::SimpleRect (*group, 1.0, trackview->editor().frame_to_pixel(item_duration) - 1, trackview->current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE, trackview->current_height() - 1); + name_highlight = new ArdourCanvas::SimpleRect (*group, 1.0, trackview.editor().frame_to_pixel(item_duration) - 1, trackview.current_height() - TimeAxisViewItem::NAME_HIGHLIGHT_SIZE, trackview.current_height() - 1); } name_highlight->set_data ("timeaxisviewitem", this); @@ -193,7 +193,7 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color const & ba if (visibility & ShowNameText) { name_pixbuf = new ArdourCanvas::Pixbuf(*group); name_pixbuf->property_x() = NAME_X_OFFSET; - name_pixbuf->property_y() = trackview->current_height() - 1.0 - NAME_Y_OFFSET; + name_pixbuf->property_y() = trackview.current_height() - 1.0 - NAME_Y_OFFSET; } else { name_pixbuf = 0; @@ -206,7 +206,7 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color const & ba frame_handle_start = new ArdourCanvas::SimpleRect (*group, 0.0, TimeAxisViewItem::GRAB_HANDLE_LENGTH, 1.0, TimeAxisViewItem::GRAB_HANDLE_LENGTH+1); frame_handle_start->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_FrameHandle.get(); - frame_handle_end = new ArdourCanvas::SimpleRect (*group, trackview->editor().frame_to_pixel(get_duration()) - TimeAxisViewItem::GRAB_HANDLE_LENGTH, trackview->editor().frame_to_pixel(get_duration()), 1.0, TimeAxisViewItem::GRAB_HANDLE_LENGTH + 1); + frame_handle_end = new ArdourCanvas::SimpleRect (*group, trackview.editor().frame_to_pixel(get_duration()) - TimeAxisViewItem::GRAB_HANDLE_LENGTH, trackview.editor().frame_to_pixel(get_duration()), 1.0, TimeAxisViewItem::GRAB_HANDLE_LENGTH + 1); frame_handle_end->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_FrameHandle.get(); } else { @@ -308,7 +308,7 @@ TimeAxisViewItem::set_duration (nframes_t dur, void* src) item_duration = dur; - reset_width_dependent_items (trackview->editor().frame_to_pixel (dur)); + reset_width_dependent_items (trackview.editor().frame_to_pixel (dur)); DurationChanged (dur, src) ; /* EMIT_SIGNAL */ return true; @@ -510,8 +510,8 @@ TimeAxisViewItem::set_should_show_selection (bool yn) * * @return the timeAxisView that this item is placed upon */ -TimeAxisViewPtr -TimeAxisViewItem::get_time_axis_view () +TimeAxisView& +TimeAxisViewItem::get_time_axis_view() { return trackview; } @@ -531,7 +531,7 @@ TimeAxisViewItem::set_name_text(const ustring& new_name) double font_size; font_size = NAME_FONT->get_size() / Pango::SCALE; - it_width = trackview->editor().frame_to_pixel(item_duration); + it_width = trackview.editor().frame_to_pixel(item_duration); pb_width = new_name.length() * font_size; if (pb_width > it_width - NAME_X_OFFSET) { diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index 4425313cba..97e7a73745 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -28,7 +28,6 @@ #include "selectable.h" #include "simplerect.h" #include "canvas.h" -#include "shared_ptrs.h" class TimeAxisView; @@ -189,7 +188,7 @@ class TimeAxisViewItem : public Selectable * * @return the timeAxisView that this item is placed upon */ - TimeAxisViewPtr get_time_axis_view() ; + TimeAxisView& get_time_axis_view() ; //---------------------------------------------------------------------------------------// // ui methods & data @@ -240,7 +239,7 @@ class TimeAxisViewItem : public Selectable /** * Returns the time axis that this item is upon */ - TimeAxisViewPtr get_trackview() const { return trackview; } + TimeAxisView& get_trackview() const { return trackview; } /** * Sets the samples per unit of this item. @@ -342,7 +341,7 @@ class TimeAxisViewItem : public Selectable * @param start the start point of this item * @param duration the duration of this item */ - TimeAxisViewItem(const std::string & it_name, ArdourCanvas::Group& parent, TimeAxisViewPtr tv, double spu, Gdk::Color const & base_color, + TimeAxisViewItem(const std::string & it_name, ArdourCanvas::Group& parent, TimeAxisView& tv, double spu, Gdk::Color const & base_color, nframes_t start, nframes_t duration, bool recording = false, Visibility v = Visibility (0)); TimeAxisViewItem (const TimeAxisViewItem& other); @@ -386,7 +385,7 @@ class TimeAxisViewItem : public Selectable static gint idle_remove_this_item(TimeAxisViewItem* item, void* src) ; /** The time axis that this item is upon */ - TimeAxisViewPtr trackview ; + TimeAxisView& trackview ; /** indicates whether this item is locked to its current position */ bool position_locked ; diff --git a/gtk2_ardour/time_selection.h b/gtk2_ardour/time_selection.h index aaa307400d..ba4250ad7f 100644 --- a/gtk2_ardour/time_selection.h +++ b/gtk2_ardour/time_selection.h @@ -22,7 +22,6 @@ #include <list> #include "ardour/types.h" -#include "shared_ptrs.h" namespace ARDOUR { class RouteGroup; @@ -42,7 +41,7 @@ struct TimeSelection : public std::list<ARDOUR::AudioRange> { the group. */ - TimeAxisViewPtr track; + TimeAxisView* track; ARDOUR::RouteGroup* group; ARDOUR::AudioRange& operator[](uint32_t); diff --git a/gtk2_ardour/track_selection.cc b/gtk2_ardour/track_selection.cc index fd73d97699..d9c7f02e19 100755 --- a/gtk2_ardour/track_selection.cc +++ b/gtk2_ardour/track_selection.cc @@ -3,16 +3,16 @@ using namespace std; -TrackSelection::TrackSelection (list<TimeAxisViewPtr> const &t) - : list<TimeAxisViewPtr> (t) +TrackSelection::TrackSelection (list<TimeAxisView*> const &t) + : list<TimeAxisView*> (t) { } -list<TimeAxisViewPtr> -TrackSelection::add (list<TimeAxisViewPtr> const & t) +list<TimeAxisView*> +TrackSelection::add (list<TimeAxisView*> const & t) { - list<TimeAxisViewPtr> added; + list<TimeAxisView*> added; for (TrackSelection::const_iterator i = t.begin(); i != t.end(); ++i) { if (!contains (*i)) { @@ -25,7 +25,7 @@ TrackSelection::add (list<TimeAxisViewPtr> const & t) } bool -TrackSelection::contains (TimeAxisViewConstPtr t) const +TrackSelection::contains (TimeAxisView const * t) const { return find (begin(), end(), t) != end(); } diff --git a/gtk2_ardour/track_selection.h b/gtk2_ardour/track_selection.h index 363492eafd..2a4cc1b288 100644 --- a/gtk2_ardour/track_selection.h +++ b/gtk2_ardour/track_selection.h @@ -21,18 +21,17 @@ #define __ardour_gtk_track_selection_h__ #include <list> -#include "shared_ptrs.h" class TimeAxisView; -class TrackSelection : public std::list<TimeAxisViewPtr> +class TrackSelection : public std::list<TimeAxisView*> { public: TrackSelection () {} - TrackSelection (std::list<TimeAxisViewPtr> const &); - std::list<TimeAxisViewPtr> add (std::list<TimeAxisViewPtr> const &); - bool contains (TimeAxisViewConstPtr) const; + TrackSelection (std::list<TimeAxisView*> const &); + std::list<TimeAxisView*> add (std::list<TimeAxisView*> const &); + bool contains (TimeAxisView const *) const; }; #endif /* __ardour_gtk_track_selection_h__ */ |