13
0

skip [duplicate] meter re-packing.

This commit is contained in:
Robin Gareus 2015-04-30 19:06:26 +02:00
parent 0e85408c59
commit 4dc29153a2
2 changed files with 27 additions and 1 deletions

View File

@ -51,6 +51,8 @@ LevelMeterBase::LevelMeterBase (Session* s, PBD::EventLoop::InvalidationRecord*
, thin_meter_width(2)
, max_peak (minus_infinity())
, meter_type (MeterPeak)
, visible_meter_type (MeterType(0))
, visible_meter_count (0)
, color_changed (false)
{
set_session (s);
@ -236,9 +238,9 @@ LevelMeterBase::hide_all_meters ()
void
LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
{
hide_all_meters ();
if (!_meter) {
hide_all_meters ();
return; /* do it later or never */
}
@ -251,6 +253,7 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
guint16 width;
if (nmeters == 0) {
hide_all_meters ();
return;
}
@ -262,6 +265,27 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
width = rint (width * ARDOUR_UI::ui_scale);
if ( meters.size() > 0
&& nmeters == visible_meter_count
&& meters[0].width == width
&& meters[0].length == len
&& !color_changed
&& meter_type == visible_meter_type) {
return;
}
#if 0
printf("Meter redraw: %s %s %s %s %s %s\n",
(meters.size() > 0) ? "yes" : "no",
(meters.size() > 0 && meters[0].width == width) ? "yes" : "no",
(meters.size() > 0 && meters[0].length == len) ? "yes" : "no",
(nmeters == visible_meter_count) ? "yes" : "no",
(meter_type == visible_meter_type) ? "yes" : "no",
!color_changed ? "yes" : "no"
);
#endif
hide_all_meters ();
while (meters.size() < nmeters) {
meters.push_back (MeterInfo());
}
@ -443,6 +467,7 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
//show();
color_changed = false;
visible_meter_type = meter_type;
visible_meter_count = nmeters;
}
void

View File

@ -108,6 +108,7 @@ class LevelMeterBase : public ARDOUR::SessionHandlePtr, virtual public sigc::tra
float max_peak;
ARDOUR::MeterType meter_type;
ARDOUR::MeterType visible_meter_type;
uint32_t visible_meter_count;
PBD::ScopedConnection _configuration_connection;
PBD::ScopedConnection _meter_type_connection;