diff options
author | Robin Gareus <robin@gareus.org> | 2016-05-04 17:36:40 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-05-04 17:36:40 +0200 |
commit | 106851b33a52b122cdded8fa2dd03c47bac955a9 (patch) | |
tree | db2b6620d1bc2337ed1b9ad0cf40a28676dc937d /gtk2_ardour/level_meter.cc | |
parent | 6236c201bd4869e85f95b52aca0bcd4ae8d9a57e (diff) |
add option to limit track-header meters to stereo
Diffstat (limited to 'gtk2_ardour/level_meter.cc')
-rw-r--r-- | gtk2_ardour/level_meter.cc | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc index d9f31303dd..114c28c708 100644 --- a/gtk2_ardour/level_meter.cc +++ b/gtk2_ardour/level_meter.cc @@ -51,7 +51,8 @@ LevelMeterBase::LevelMeterBase (Session* s, PBD::EventLoop::InvalidationRecord* , max_peak (minus_infinity()) , meter_type (MeterPeak) , visible_meter_type (MeterType(0)) - , visible_meter_count (0) + , meter_count (0) + , max_visible_meters (0) , color_changed (false) { set_session (s); @@ -230,7 +231,18 @@ LevelMeterBase::hide_all_meters () (*i).packed = false; } } - visible_meter_count = 0; + meter_count = 0; +} + +void +LevelMeterBase::set_max_audio_meter_count (uint32_t cnt) +{ + if (cnt == max_visible_meters) { + return; + } + color_changed = true; // force re-setup + max_visible_meters = cnt; + setup_meters (meter_length, regular_meter_width, thin_meter_width); } void @@ -264,7 +276,7 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width) width = rint (width * UIConfiguration::instance().get_ui_scale()); if ( meters.size() > 0 - && nmeters == visible_meter_count + && nmeters == meter_count && meters[0].width == width && meters[0].length == len && !color_changed @@ -277,7 +289,7 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width) (meters.size() > 0) ? "yes" : "no", (meters.size() > 0 && meters[0].width == width) ? "yes" : "no", (meters.size() > 0 && meters[0].length == len) ? "yes" : "no", - (nmeters == visible_meter_count) ? "yes" : "no", + (nmeters == meter_count) ? "yes" : "no", (meter_type == visible_meter_type) ? "yes" : "no", !color_changed ? "yes" : "no" ); @@ -459,13 +471,17 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width) //pack_end (*meters[n].meter, false, false); mtr_pack (*meters[n].meter); - meters[n].meter->show_all (); meters[n].packed = true; + if (max_visible_meters == 0 || (uint32_t) n < max_visible_meters + nmidi) { + meters[n].meter->show_all (); + } else { + meters[n].meter->hide (); + } } //show(); color_changed = false; visible_meter_type = meter_type; - visible_meter_count = nmeters; + meter_count = nmeters; } void |