From d2c39db64db72eb364246327aafda871a71e0d8e Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 18 Jul 2013 09:00:24 +0200 Subject: mixer metric background color fix (MIDI & inactive) fixes http://tracker.ardour.org/view.php?id=5594 --- gtk2_ardour/gain_meter.cc | 29 +++++++++++++++++++++++------ gtk2_ardour/gain_meter.h | 3 ++- 2 files changed, 25 insertions(+), 7 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 1148c6b889..f5d4f1afa2 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -950,6 +950,8 @@ GainMeter::GainMeter (Session* s, int fader_length) meter_hbox.pack_start (meter_metric_area, false, false); } +GainMeter::~GainMeter () { } + void GainMeter::set_controls (boost::shared_ptr r, boost::shared_ptr meter, @@ -977,6 +979,10 @@ GainMeter::set_controls (boost::shared_ptr r, } + if (_route) { + _route->active_changed.connect (model_connections, invalidator (*this), boost::bind (&GainMeter::route_active_changed, this), gui_context ()); + } + /* if we have a non-hidden route (ie. we're not the click or the auditioner), pack some route-dependent stuff. @@ -1067,18 +1073,21 @@ GainMeter::meter_configuration_changed (ChanCount c) set_meter_strip_name ("AudioBusMetricsInactive"); } } - else if (type == (1 << DataType::AUDIO)) { + else if ( + (type == (1 << DataType::MIDI)) + || (_route && boost::dynamic_pointer_cast(_route)) + ) { if (!_route || _route->active()) { - set_meter_strip_name ("AudioTrackMetrics"); + set_meter_strip_name ("MidiTrackMetrics"); } else { - set_meter_strip_name ("AudioTrackMetricsInactive"); + set_meter_strip_name ("MidiTrackMetricsInactive"); } } - else if (type == (1 << DataType::MIDI)) { + else if (type == (1 << DataType::AUDIO)) { if (!_route || _route->active()) { - set_meter_strip_name ("MidiTrackMetrics"); + set_meter_strip_name ("AudioTrackMetrics"); } else { - set_meter_strip_name ("MidiTrackMetricsInactive"); + set_meter_strip_name ("AudioTrackMetricsInactive"); } } else { if (!_route || _route->active()) { @@ -1090,6 +1099,14 @@ GainMeter::meter_configuration_changed (ChanCount c) meter_clear_pattern_cache(4); } +void +GainMeter::route_active_changed () +{ + if (_meter) { + meter_configuration_changed (_meter->input_streams ()); + } +} + void GainMeter::meter_type_changed (MeterType t) { diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 9353cfeaad..0c698d54ee 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -201,7 +201,7 @@ class GainMeter : public GainMeterBase, public Gtk::VBox { public: GainMeter (ARDOUR::Session*, int); - ~GainMeter () {} + virtual ~GainMeter (); virtual void set_controls (boost::shared_ptr route, boost::shared_ptr meter, @@ -210,6 +210,7 @@ class GainMeter : public GainMeterBase, public Gtk::VBox int get_gm_width (); void setup_meters (int len=0); void set_type (ARDOUR::MeterType); + void route_active_changed (); protected: void hide_all_meters (); -- cgit v1.2.3