summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-12-10 03:25:32 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-12-10 03:25:32 +0000
commit61cade6d59118288e90a405e0f4fbc24d0108814 (patch)
treefe9083a4c005ac239bf5995c16252609dc547869 /gtk2_ardour
parentf18bcf0cc835ab401d8e28dcc18c72795977752a (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.cc8
-rw-r--r--gtk2_ardour/editor.h4
-rw-r--r--gtk2_ardour/editor_route_groups.cc16
-rw-r--r--gtk2_ardour/editor_routes.cc2
-rw-r--r--gtk2_ardour/group_tabs.cc6
-rw-r--r--gtk2_ardour/mixer_strip.cc10
-rw-r--r--gtk2_ardour/mixer_strip.h2
-rw-r--r--gtk2_ardour/mixer_ui.cc2
-rw-r--r--gtk2_ardour/port_group.cc2
-rw-r--r--gtk2_ardour/public_editor.h2
-rw-r--r--gtk2_ardour/route_group_menu.cc1
-rw-r--r--gtk2_ardour/route_time_axis.cc26
-rw-r--r--gtk2_ardour/route_ui.cc26
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
}
}