mixer metric background color fix (MIDI & inactive)

fixes http://tracker.ardour.org/view.php?id=5594
This commit is contained in:
Robin Gareus 2013-07-18 09:00:24 +02:00
parent 55c5a76e8b
commit d2c39db64d
2 changed files with 26 additions and 8 deletions

View File

@ -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,19 +1073,22 @@ GainMeter::meter_configuration_changed (ChanCount c)
set_meter_strip_name ("AudioBusMetricsInactive");
}
}
else if (
(type == (1 << DataType::MIDI))
|| (_route && boost::dynamic_pointer_cast<MidiTrack>(_route))
) {
if (!_route || _route->active()) {
set_meter_strip_name ("MidiTrackMetrics");
} else {
set_meter_strip_name ("MidiTrackMetricsInactive");
}
}
else if (type == (1 << DataType::AUDIO)) {
if (!_route || _route->active()) {
set_meter_strip_name ("AudioTrackMetrics");
} else {
set_meter_strip_name ("AudioTrackMetricsInactive");
}
}
else if (type == (1 << DataType::MIDI)) {
if (!_route || _route->active()) {
set_meter_strip_name ("MidiTrackMetrics");
} else {
set_meter_strip_name ("MidiTrackMetricsInactive");
}
} else {
if (!_route || _route->active()) {
set_meter_strip_name ("AudioMidiTrackMetrics");
@ -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)
{

View File

@ -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 ();