X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmeterbridge.cc;h=bb5c4b8eca96d503193951d621f572935ab0f421;hb=5fef65538040fbac1b9edd1847a269aa925a49c9;hp=4a4f1dd8dd3a81ad3023c1d31db7d13eb7822560;hpb=4db277056fac078c057cfc51ce9d4cee19c89d71;p=ardour.git diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index 4a4f1dd8dd..bb5c4b8eca 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" @@ -57,6 +58,7 @@ #include "i18n.h" using namespace ARDOUR; +using namespace ARDOUR_UI_UTILS; using namespace PBD; using namespace Gtk; using namespace Glib; @@ -78,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 (MixerSort) < b->order_key (MixerSort); - } -}; - Meterbridge::Meterbridge () : Window (Gtk::WINDOW_TOPLEVEL) , VisibilityTracker (*((Gtk::Window*) this)) @@ -138,7 +122,7 @@ Meterbridge::Meterbridge () signal_delete_event().connect (sigc::mem_fun (*this, &Meterbridge::hide_window)); signal_configure_event().connect (sigc::mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler)); - Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Meterbridge::sync_order_keys, this, _1), gui_context()); + Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Meterbridge::sync_order_keys, this), gui_context()); MeterStrip::CatchDeletion.connect (*this, invalidator (*this), boost::bind (&Meterbridge::remove_strip, this, _1), gui_context()); MeterStrip::MetricChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::resync_order, this), gui_context()); MeterStrip::ConfigurationChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::queue_resize, this), gui_context()); @@ -408,7 +392,7 @@ Meterbridge::on_scroll() ARDOUR::MeterType mt_right = _mt_right; for (unsigned int i = 0; i < _metrics.size(); ++i) { - int sx, dx, dy; + int sx, dx = 0, dy = 0; int mm = _metrics[i]->get_metric_mode(); sx = (mm & 2) ? _metrics[i]->get_width() : 0; @@ -450,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); @@ -637,7 +621,7 @@ Meterbridge::remove_strip (MeterStrip* strip) } void -Meterbridge::sync_order_keys (RouteSortOrderKey) +Meterbridge::sync_order_keys () { Glib::Threads::Mutex::Lock lm (_resync_mutex); @@ -702,11 +686,11 @@ Meterbridge::sync_order_keys (RouteSortOrderKey) MeterType nmt = (*i).s->meter_type(); if (nmt == MeterKrms) nmt = MeterPeak; // identical metrics - if (pos == 0) { + if (vis == 1) { (*i).s->set_tick_bar(1); } - if ((*i).visible && nmt != lmt && pos == 0) { + if ((*i).visible && nmt != lmt && vis == 1) { lmt = nmt; metrics_left.set_metric_mode(1, lmt); } else if ((*i).visible && nmt != lmt) { @@ -776,7 +760,7 @@ Meterbridge::sync_order_keys (RouteSortOrderKey) void Meterbridge::resync_order() { - sync_order_keys(MixerSort); + sync_order_keys(); } void @@ -812,6 +796,12 @@ Meterbridge::parameter_changed (std::string const & p) else if (p == "meterbridge-label-height") { scroller.queue_resize(); } + else if (p == "show-monitor-on-meterbridge") { + scroller.queue_resize(); + } + else if (p == "track-name-number") { + scroller.queue_resize(); + } } void