summaryrefslogtreecommitdiff
path: root/gtk2_ardour/level_meter.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-05-04 17:36:40 +0200
committerRobin Gareus <robin@gareus.org>2016-05-04 17:36:40 +0200
commit106851b33a52b122cdded8fa2dd03c47bac955a9 (patch)
treedb2b6620d1bc2337ed1b9ad0cf40a28676dc937d /gtk2_ardour/level_meter.cc
parent6236c201bd4869e85f95b52aca0bcd4ae8d9a57e (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.cc28
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