13
0

consolidate SignalOrderRouteSorter

This commit is contained in:
Robin Gareus 2014-06-24 01:36:07 +02:00
parent a3c378cf62
commit b90d7a01fa
3 changed files with 48 additions and 36 deletions

View File

@ -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<Route> a, boost::shared_ptr<Route> 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<RouteList> routes = _session->get_routes();
RouteList copy(*routes);

View File

@ -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<Route> a, boost::shared_ptr<Route> 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<RouteList> routes = _session->get_routes();
RouteList copy (*routes);
SignalOrderRouteSorter sorter;
ARDOUR::SignalOrderRouteSorter sorter;
copy.sort (sorter);

View File

@ -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<Route> a, boost::shared_ptr<Route> 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__ */