diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-18 09:00:24 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-18 09:00:24 +0200 |
commit | d2c39db64db72eb364246327aafda871a71e0d8e (patch) | |
tree | 3a23d4d9b7d66511290d7c84c404a1f7daf733c0 /gtk2_ardour | |
parent | 55c5a76e8bec0c9f485f89f63558c1baf00e74b2 (diff) |
mixer metric background color fix (MIDI & inactive)
fixes http://tracker.ardour.org/view.php?id=5594
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/gain_meter.cc | 29 | ||||
-rw-r--r-- | gtk2_ardour/gain_meter.h | 3 |
2 files changed, 25 insertions, 7 deletions
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<Route> r, boost::shared_ptr<PeakMeter> meter, @@ -977,6 +979,10 @@ GainMeter::set_controls (boost::shared_ptr<Route> 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<MidiTrack>(_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()) { @@ -1091,6 +1100,14 @@ GainMeter::meter_configuration_changed (ChanCount c) } void +GainMeter::route_active_changed () +{ + if (_meter) { + meter_configuration_changed (_meter->input_streams ()); + } +} + +void GainMeter::meter_type_changed (MeterType t) { _route->set_meter_type(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<ARDOUR::Route> route, boost::shared_ptr<ARDOUR::PeakMeter> 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 (); |