diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-12-10 03:25:32 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-12-10 03:25:32 +0000 |
commit | 61cade6d59118288e90a405e0f4fbc24d0108814 (patch) | |
tree | fe9083a4c005ac239bf5995c16252609dc547869 /gtk2_ardour | |
parent | f18bcf0cc835ab401d8e28dcc18c72795977752a (diff) |
drastic, deep and wide changes to make RouteGroup use boost::shared_ptr<Route> and boost::shared_ptr<RouteList> to better fit into emerging framework for "RT operations" ; torben's changes to MTC slaving code (sorry for bundling)
git-svn-id: svn://localhost/ardour2/branches/3.0@6334 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/editor_route_groups.cc | 16 | ||||
-rw-r--r-- | gtk2_ardour/editor_routes.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/group_tabs.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/mixer_strip.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/mixer_strip.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/port_group.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/public_editor.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/route_group_menu.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/route_time_axis.cc | 26 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.cc | 26 |
13 files changed, 56 insertions, 51 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index c21393247c..5cbe2b7c6a 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -4805,12 +4805,12 @@ Editor::streamview_height_changed () } TimeAxisView* -Editor::axis_view_from_route (Route* r) const +Editor::axis_view_from_route (boost::shared_ptr<Route> r) const { TrackViewList::const_iterator j = track_views.begin (); while (j != track_views.end()) { RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*j); - if (rtv && rtv->route().get() == r) { + if (rtv && rtv->route() == r) { return rtv; } ++j; @@ -4821,11 +4821,11 @@ Editor::axis_view_from_route (Route* r) const TrackSelection -Editor::axis_views_from_routes (list<Route*> r) const +Editor::axis_views_from_routes (boost::shared_ptr<RouteList> r) const { TrackSelection t; - for (list<Route*>::const_iterator i = r.begin(); i != r.end(); ++i) { + for (RouteList::const_iterator i = r->begin(); i != r->end(); ++i) { TimeAxisView* tv = axis_view_from_route (*i); if (tv) { t.push_back (tv); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 73a4649e94..49135f0f9e 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -950,8 +950,8 @@ class Editor : public PublicEditor /* track views */ TrackViewList track_views; std::pair<TimeAxisView*, ARDOUR::layer_t> trackview_by_y_position (double); - TimeAxisView* axis_view_from_route (ARDOUR::Route *) const; - TrackSelection axis_views_from_routes (std::list<ARDOUR::Route *>) const; + TimeAxisView* axis_view_from_route (boost::shared_ptr<ARDOUR::Route>) const; + TrackSelection axis_views_from_routes (boost::shared_ptr<ARDOUR::RouteList>) const; TrackSelection get_tracks_for_range_action () const; diff --git a/gtk2_ardour/editor_route_groups.cc b/gtk2_ardour/editor_route_groups.cc index 79049e02bc..bb094e2cc0 100644 --- a/gtk2_ardour/editor_route_groups.cc +++ b/gtk2_ardour/editor_route_groups.cc @@ -271,7 +271,7 @@ EditorRouteGroups::run_new_group_dialog (const RouteList& rl) case Gtk::RESPONSE_ACCEPT: _session->add_route_group (g); for (RouteList::const_iterator i = rl.begin(); i != rl.end(); ++i) { - (*i)->set_route_group (g, this); + g->add (*i); } break; default: @@ -673,7 +673,7 @@ EditorRouteGroups::connect_to_session (Session* s) } struct CollectSorter { - bool operator () (Route* a, Route* b) { + bool operator () (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) { return a->order_key (N_ ("editor")) < b->order_key (N_ ("editor")); } }; @@ -684,16 +684,16 @@ struct CollectSorter { void EditorRouteGroups::collect (RouteGroup* g) { - list<Route*> routes = g->route_list (); - routes.sort (CollectSorter ()); - int const N = routes.size (); + boost::shared_ptr<RouteList> routes = g->route_list (); + routes->sort (CollectSorter ()); + int const N = routes->size (); - list<Route*>::iterator i = routes.begin (); + RouteList::iterator i = routes->begin (); Editor::TrackViewList::const_iterator j = _editor->get_track_views().begin(); int diff = 0; int coll = -1; - while (i != routes.end() && j != _editor->get_track_views().end()) { + while (i != routes->end() && j != _editor->get_track_views().end()) { RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*j); if (rtv) { @@ -701,7 +701,7 @@ EditorRouteGroups::collect (RouteGroup* g) boost::shared_ptr<Route> r = rtv->route (); int const k = r->order_key (N_ ("editor")); - if (*i == r.get()) { + if (*i == r) { if (coll == -1) { coll = k; diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc index e92e054426..100c552be7 100644 --- a/gtk2_ardour/editor_routes.cc +++ b/gtk2_ardour/editor_routes.cc @@ -946,7 +946,7 @@ EditorRoutes::show_tracks_with_regions_at_playhead () set<TimeAxisView*> show; for (RouteList::const_iterator i = r->begin(); i != r->end(); ++i) { - TimeAxisView* tav = _editor->axis_view_from_route (i->get ()); + TimeAxisView* tav = _editor->axis_view_from_route (*i); if (tav) { show.insert (tav); } diff --git a/gtk2_ardour/group_tabs.cc b/gtk2_ardour/group_tabs.cc index b099c0d309..571368fe93 100644 --- a/gtk2_ardour/group_tabs.cc +++ b/gtk2_ardour/group_tabs.cc @@ -183,7 +183,7 @@ GroupTabs::on_button_release_event (GdkEventButton* ev) RouteGroup* g = new_route_group (); if (g) { for (RouteList::iterator i = routes.begin(); i != routes.end(); ++i) { - (*i)->set_route_group (g, this); + g->add (*i); } } } else { @@ -193,10 +193,10 @@ GroupTabs::on_button_release_event (GdkEventButton* ev) if (find (routes.begin(), routes.end(), *i) == routes.end()) { /* this route is not on the list of those that should be in _dragging's group */ if ((*i)->route_group() == _dragging->group) { - (*i)->drop_route_group (this); + _dragging->group->remove (*i); } } else { - (*i)->set_route_group (_dragging->group, this); + _dragging->group->add (*i); } } } diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 8e67b4b526..22b39c1a29 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -447,7 +447,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt) solo_changed (0); name_changed (); comment_changed (0); - route_group_changed (0); + route_group_changed (); connect_to_pan (); @@ -608,7 +608,7 @@ MixerStrip::set_width_enum (Width w, void* owner) update_input_display (); update_output_display (); - route_group_changed (0); + route_group_changed (); name_changed (); WidthChanged (); } @@ -1303,7 +1303,7 @@ MixerStrip::comment_changed (void *src) void MixerStrip::set_route_group (RouteGroup *rg) { - _route->set_route_group (rg, this); + rg->add (_route); } bool @@ -1330,9 +1330,9 @@ MixerStrip::select_route_group (GdkEventButton *ev) } void -MixerStrip::route_group_changed (void *ignored) +MixerStrip::route_group_changed () { - ENSURE_GUI_THREAD(bind (mem_fun(*this, &MixerStrip::route_group_changed), ignored)); + ENSURE_GUI_THREAD (mem_fun(*this, &MixerStrip::route_group_changed)); RouteGroup *rg = _route->route_group(); diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index 1f31b7cae5..d5b247019b 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -238,7 +238,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox void set_route_group (ARDOUR::RouteGroup *); bool select_route_group (GdkEventButton *); - void route_group_changed (void *); + void route_group_changed (); IOSelectorWindow *input_selector; IOSelectorWindow *output_selector; diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 30e56620a0..097c229cf0 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -1152,7 +1152,7 @@ Mixer_UI::group_flags_changed (void* src, RouteGroup* group) for (list<MixerStrip *>::iterator i = strips.begin(); i != strips.end(); ++i) { if ((*i)->route_group() == group) { - (*i)->route_group_changed(0); + (*i)->route_group_changed(); } } diff --git a/gtk2_ardour/port_group.cc b/gtk2_ardour/port_group.cc index 2589722264..c0d8db9cba 100644 --- a/gtk2_ardour/port_group.cc +++ b/gtk2_ardour/port_group.cc @@ -296,7 +296,7 @@ PortGroupList::gather (ARDOUR::Session* session, bool inputs, bool allow_dups) if (g) { - TimeAxisView* tv = PublicEditor::instance().axis_view_from_route (i->get()); + TimeAxisView* tv = PublicEditor::instance().axis_view_from_route (*i); for (list<boost::shared_ptr<Bundle> >::iterator i = route_bundles.begin(); i != route_bundles.end(); ++i) { if (tv) { g->add_bundle (*i, io, tv->color ()); diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 90d24dc802..e520e30a89 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -346,7 +346,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual ArdourCanvas::Group* get_background_group () const = 0; virtual ArdourCanvas::Group* get_trackview_group () const = 0; - virtual TimeAxisView* axis_view_from_route (ARDOUR::Route *) const = 0; + virtual TimeAxisView* axis_view_from_route (boost::shared_ptr<ARDOUR::Route>) const = 0; virtual void show_verbose_canvas_cursor_with (const std::string& txt) = 0; virtual void hide_verbose_canvas_cursor() = 0; diff --git a/gtk2_ardour/route_group_menu.cc b/gtk2_ardour/route_group_menu.cc index 6c3e9db73d..bd8bcc8a28 100644 --- a/gtk2_ardour/route_group_menu.cc +++ b/gtk2_ardour/route_group_menu.cc @@ -73,7 +73,6 @@ RouteGroupMenu::set_group (RouteGroup* g) GroupSelected (g); } - void RouteGroupMenu::new_group () { diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index ef948307a2..4d828d4fd8 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -311,20 +311,28 @@ gint RouteTimeAxisView::edit_click (GdkEventButton *ev) { if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { - _route->set_route_group (0, this); - return FALSE; + if (_route->route_group()) { + _route->route_group()->remove (_route); + } + return false; } route_group_menu->rebuild (_route->route_group ()); route_group_menu->popup (ev->button, ev->time); - return FALSE; + return false; } void RouteTimeAxisView::set_route_group_from_menu (RouteGroup *eg) { - _route->set_route_group (eg, this); + if (eg) { + eg->add (_route); + } else { + if (_route->route_group()) { + _route->route_group()->remove (_route); + } + } } void @@ -1572,14 +1580,16 @@ RouteTimeAxisView::use_playlist (boost::weak_ptr<Playlist> wpl) take_name = take_name.substr(idx + group_string.length()); // find the bit containing the take number / name - for (list<Route*>::const_iterator i = route_group()->route_list().begin(); i != route_group()->route_list().end(); ++i) { - if ( (*i) == this->route().get()) { + boost::shared_ptr<RouteList> rl (route_group()->route_list()); + + for (RouteList::const_iterator i = rl->begin(); i != rl->end(); ++i) { + if ( (*i) == this->route()) { continue; } std::string playlist_name = (*i)->name()+group_string+take_name; - Track *track = dynamic_cast<Track *>(*i); + boost::shared_ptr<Track> track = boost::dynamic_pointer_cast<Track>(*i); if (!track) { std::cerr << "route " << (*i)->name() << " is not a Track" << std::endl; continue; @@ -1593,8 +1603,6 @@ RouteTimeAxisView::use_playlist (boost::weak_ptr<Playlist> wpl) } else { track->diskstream()->use_playlist(ipl); } - - //(*i)->get_dis } } } diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 9eb356ddd1..821b82a0b6 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -543,35 +543,33 @@ RouteUI::rec_enable_press(GdkEventButton* ev) } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) { - SessionEvent* ev = new SessionEvent (SessionEvent::RealTimeOperation, SessionEvent::Add, SessionEvent::Immediate, 0, 0.0); - ev->rt_slot = bind (sigc::mem_fun (_session, &Session::set_record_enable), _session.get_routes(), !rec_enable_button->get_active()); - ev->rt_return = sigc::mem_fun (*this, &RouteUI::post_rtop_cleanup); - - _session.queue_event (ev); +#if 0 + _session.set_record_enable (_session.get_route(), !rec_enable_button->get_active(), sigc::mem_fun (*this, &RouteUI::post_rtop_cleanup)); +#endif } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) { /* Primary-button1 applies change to the route group (even if it is not active) NOTE: Primary-button2 is MIDI learn. */ - - if (ev->button == 1) { - queue_route_group_op (RouteGroup::RecEnable, &Session::set_record_enable, !rec_enable_button->get_active()); +#if 0 + if (ev->button == 1 && _route->route_group()) { + _session.set_record_enable (_route->route_group(), !rec_enable_button->get_active(), + queue_route_group_op (RouteGroup::RecEnable, &Session::set_record_enable, } +#endif } else if (Keyboard::is_context_menu_event (ev)) { /* do this on release */ } else { + +#if 0 boost::shared_ptr<RouteList> rl (new RouteList); rl->push_back (route()); - - SessionEvent* ev = new SessionEvent (SessionEvent::RealTimeOperation, SessionEvent::Add, SessionEvent::Immediate, 0, 0.0); - ev->rt_slot = bind (sigc::mem_fun (_session, &Session::set_record_enable), rl, !rec_enable_button->get_active()); - ev->rt_return = sigc::mem_fun (*this, &RouteUI::post_rtop_cleanup); - - _session.queue_event (ev); + _session.set_record_enable (rl, !rec_enable_button->get_active(), sigc::mem_fun (*this, &RouteUI::post_rtop_cleanup)); +#endif } } |