fix caching of Audio+Midi metrics

MIDI track meters can either be MIDI-only or Audio+MIDI
previously they used the same ID for gain-meter static
image cache.
This commit is contained in:
Robin Gareus 2013-06-23 14:23:47 +02:00
parent 9a9f4276a0
commit 2b9ee3b0f4
3 changed files with 44 additions and 6 deletions

View File

@ -736,6 +736,11 @@ style "midi_track_metrics" = "midi_track_base"
font_name = "@FONT_TINY@"
}
style "audiomidi_track_metrics" = "midi_track_base"
{
font_name = "@FONT_TINY@"
}
style "audio_bus_metrics" = "audio_bus_base"
{
font_name = "@FONT_TINY@"
@ -751,6 +756,11 @@ style "midi_track_metrics_inactive" = "track_controls_inactive"
font_name = "@FONT_TINY@"
}
style "audiomidi_track_metrics_inactive" = "track_controls_inactive"
{
font_name = "@FONT_TINY@"
}
style "audio_bus_metrics_inactive" = "track_controls_inactive"
{
font_name = "@FONT_TINY@"

View File

@ -48,6 +48,8 @@
#include "ardour/session.h"
#include "ardour/route.h"
#include "ardour/meter.h"
#include "ardour/audio_track.h"
#include "ardour/midi_track.h"
#include "i18n.h"
@ -1151,11 +1153,43 @@ GainMeterBase::level_meter_button_press (GdkEventButton* ev)
void
GainMeter::meter_configuration_changed (ChanCount c)
{
int type = 0;
_types.clear ();
for (DataType::iterator i = DataType::begin(); i != DataType::end(); ++i) {
if (c.get (*i) > 0) {
_types.push_back (*i);
type |= 1 << (*i);
}
}
if (boost::dynamic_pointer_cast<AudioTrack>(_route) == 0
&& boost::dynamic_pointer_cast<MidiTrack>(_route) == 0
) {
if (_route->active()) {
set_meter_strip_name ("AudioBusMetrics");
} else {
set_meter_strip_name ("AudioBusMetricsInactive");
}
}
else if (type == (1 << DataType::AUDIO)) {
if (_route->active()) {
set_meter_strip_name ("AudioTrackMetrics");
} else {
set_meter_strip_name ("AudioTrackMetricsInactive");
}
}
else if (type == (1 << DataType::MIDI)) {
if (_route->active()) {
set_meter_strip_name ("MidiTrackMetrics");
} else {
set_meter_strip_name ("MidiTrackMetricsInactive");
}
} else {
if (_route->active()) {
set_meter_strip_name ("AudioMidiTrackMetrics");
} else {
set_meter_strip_name ("AudioMidiTrackMetricsInactive");
}
}

View File

@ -1665,28 +1665,22 @@ MixerStrip::reset_strip_style ()
if (is_midi_track()) {
if (_route->active()) {
set_name ("MidiTrackStripBase");
gpm.set_meter_strip_name ("MidiTrackMetrics");
} else {
set_name ("MidiTrackStripBaseInactive");
gpm.set_meter_strip_name ("MidiTrackMetricsInactive");
}
gpm.set_fader_name ("MidiTrackFader");
} else if (is_audio_track()) {
if (_route->active()) {
set_name ("AudioTrackStripBase");
gpm.set_meter_strip_name ("AudioTrackMetrics");
} else {
set_name ("AudioTrackStripBaseInactive");
gpm.set_meter_strip_name ("AudioTrackMetricsInactive");
}
gpm.set_fader_name ("AudioTrackFader");
} else {
if (_route->active()) {
set_name ("AudioBusStripBase");
gpm.set_meter_strip_name ("AudioBusMetrics");
} else {
set_name ("AudioBusStripBaseInactive");
gpm.set_meter_strip_name ("AudioBusMetricsInactive");
}
gpm.set_fader_name ("AudioBusFader");