diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index 5da4d3fdb5..b6b18eff95 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -40,6 +40,7 @@ #include "ardour/audio_track.h" #include "ardour/midi_track.h" +#include "ardour/route_sorters.h" #include "meterbridge.h" @@ -79,24 +80,6 @@ Meterbridge::instance () return _instance; } -/* copy from gtk2_ardour/mixer_ui.cc -- TODO consolidate - * used by Meterbridge::set_session() below - */ -struct SignalOrderRouteSorter { - bool operator() (boost::shared_ptr a, boost::shared_ptr b) { - if (a->is_master() || a->is_monitor()) { - /* "a" is a special route (master, monitor, etc), and comes - * last in the mixer ordering - */ - return false; - } else if (b->is_master() || b->is_monitor()) { - /* everything comes before b */ - return true; - } - return a->order_key () < b->order_key (); - } -}; - Meterbridge::Meterbridge () : Window (Gtk::WINDOW_TOPLEVEL) , VisibilityTracker (*((Gtk::Window*) this)) @@ -451,7 +434,7 @@ Meterbridge::set_session (Session* s) _show_master = _session->config.get_show_master_on_meterbridge(); _show_midi = _session->config.get_show_midi_on_meterbridge(); - SignalOrderRouteSorter sorter; + ARDOUR::SignalOrderRouteSorter sorter; boost::shared_ptr routes = _session->get_routes(); RouteList copy(*routes); diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 8534d40d32..e9c36690a6 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -41,6 +41,7 @@ #include "ardour/midi_track.h" #include "ardour/plugin_manager.h" #include "ardour/route_group.h" +#include "ardour/route_sorters.h" #include "ardour/session.h" #include "keyboard.h" @@ -1100,28 +1101,12 @@ Mixer_UI::strip_width_changed () } -struct SignalOrderRouteSorter { - bool operator() (boost::shared_ptr a, boost::shared_ptr b) { - if (a->is_master() || a->is_monitor()) { - /* "a" is a special route (master, monitor, etc), and comes - * last in the mixer ordering - */ - return false; - } else if (b->is_master() || b->is_monitor()) { - /* everything comes before b */ - return true; - } - return a->order_key () < b->order_key (); - - } -}; - void Mixer_UI::initial_track_display () { boost::shared_ptr routes = _session->get_routes(); RouteList copy (*routes); - SignalOrderRouteSorter sorter; + ARDOUR::SignalOrderRouteSorter sorter; copy.sort (sorter); diff --git a/libs/ardour/ardour/route_sorters.h b/libs/ardour/ardour/route_sorters.h new file mode 100644 index 0000000000..022d5a24c3 --- /dev/null +++ b/libs/ardour/ardour/route_sorters.h @@ -0,0 +1,44 @@ +/* + Copyright (C) 2000-2014 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef __libardour_route_sorters_h__ +#define __libardour_route_sorters_h__ + +#include "ardour/route.h" + +namespace ARDOUR { + +struct SignalOrderRouteSorter { + bool operator() (boost::shared_ptr a, boost::shared_ptr b) { + if (a->is_master() || a->is_monitor()) { + /* "a" is a special route (master, monitor, etc), and comes + * last in the mixer ordering + */ + return false; + } else if (b->is_master() || b->is_monitor()) { + /* everything comes before b */ + return true; + } + return a->order_key () < b->order_key (); + } +}; + +} // namespace + +#endif /* __libardour_route_sorters_h__ */