diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-23 13:30:23 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-23 13:30:23 +0200 |
commit | 8013160eb369ae8a97392284602e41cc77617b79 (patch) | |
tree | 203b5501ccd99ecb76cfdcd23d7c5adc9209cb95 /gtk2_ardour/meter_strip.cc | |
parent | 06e7ad67ae9fb84828011d7522d7c1b4cbeb7c37 (diff) |
meterbridge metrics update:
* display metrics for every used meter-type
* show metrics between meters with differnet types
* update text and label alignment for meterbridge
* fix crash when deleting metrics-strip (zero route)
* clean up metric pattern code (use float for dBFS)
Diffstat (limited to 'gtk2_ardour/meter_strip.cc')
-rw-r--r-- | gtk2_ardour/meter_strip.cc | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index 20419de7c7..4e4ffe11cf 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -57,7 +57,7 @@ using namespace ArdourMeter; PBD::Signal1<void,MeterStrip*> MeterStrip::CatchDeletion; PBD::Signal0<void> MeterStrip::MetricChanged; -MeterStrip::MeterStrip (int metricmode) +MeterStrip::MeterStrip (int metricmode, MeterType mt) : AxisView(0) , RouteUI(0) { @@ -67,7 +67,7 @@ MeterStrip::MeterStrip (int metricmode) peakbx.set_size_request(-1, 14); namebx.set_size_request(18, 52); - set_metric_mode(metricmode); + set_metric_mode(metricmode, mt); meter_metric_area.set_size_request(25, 10); meter_metric_area.signal_expose_event().connect ( @@ -394,13 +394,17 @@ MeterStrip::on_size_allocate (Gtk::Allocation& a) gint MeterStrip::meter_metrics_expose (GdkEventExpose *ev) { - // TODO meter-type - set with set_metric_mode() - return meter_expose_metrics(ev, /*XXX*/ MeterPeak, _types, &meter_metric_area); + if (_route) { + return meter_expose_metrics(ev, _route->meter_type(), _types, &meter_metric_area); + } else { + return meter_expose_metrics(ev, metric_type, _types, &meter_metric_area); + } } void -MeterStrip::set_metric_mode (int metricmode) +MeterStrip::set_metric_mode (int metricmode, ARDOUR::MeterType mt) { + metric_type = mt; _types.clear (); switch(metricmode) { case 0: @@ -425,9 +429,12 @@ MeterStrip::set_metric_mode (int metricmode) meter_metric_area.queue_draw (); } -void -MeterStrip::set_pos (int pos) +MeterType +MeterStrip::meter_type() { + assert((!_route && _strip_type == 0) || (_route && _strip_type != 0)); + if (!_route) return metric_type; + return _route->meter_type(); } gint @@ -619,7 +626,10 @@ MeterStrip::set_meter_type (MeterType type) void MeterStrip::meter_type_changed (MeterType type) { - _route->set_meter_type(type); + if (_route->meter_type() != type) { + _route->set_meter_type(type); + } + MetricChanged(); } void |