diff options
author | Robin Gareus <robin@gareus.org> | 2015-01-09 03:18:43 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-01-09 06:08:15 +0100 |
commit | 7235ece8986f335d52d8b76f5135ddb3d794de35 (patch) | |
tree | b6745286415d34036dd86ad78f8edeb9b6db8316 /gtk2_ardour/level_meter.cc | |
parent | 2132b917ccbf0d1ca51abc32f63b4dc664ec3483 (diff) |
Revert "don't unpack and repack meters unnecessarily during LevelMeterBase::setup_meters()"
This reverts commit d00e035fe0618c8e3f4c87c6386fc87efb58cd62.
..which introduced a bug.
Meter count and type may change when switching the meter point or simply
when selecting a different track in the editor-mixer. Additional meters
were not unpacked and remained on canvas.
Ideally we'd just remove the excess meters or meters where the type
changed, but that's far more complex than just repacking them all.
Diffstat (limited to 'gtk2_ardour/level_meter.cc')
-rw-r--r-- | gtk2_ardour/level_meter.cc | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc index 04a7c77cf1..efa98bb434 100644 --- a/gtk2_ardour/level_meter.cc +++ b/gtk2_ardour/level_meter.cc @@ -234,6 +234,8 @@ LevelMeterBase::hide_all_meters () void LevelMeterBase::setup_meters (int len, int initial_width, int thin_width) { + hide_all_meters (); + if (!_meter) { return; /* do it later or never */ } @@ -393,13 +395,8 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width) } if (meters[n].width != width || meters[n].length != len || color_changed || meter_type != visible_meter_type) { bool hl = meters[n].meter ? meters[n].meter->get_highlight() : false; - - if (meters[n].meter && meters[n].meter->get_parent()) { - mtr_remove (*meters[n].meter); - meters[n].packed = false; - delete meters[n].meter; - } - + meters[n].packed = false; + delete meters[n].meter; meters[n].meter = new FastMeter ((uint32_t) floor (ARDOUR_UI::config()->get_meter_hold()), width, _meter_orientation, len, c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7], c[8], c[9], @@ -413,13 +410,14 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width) meters[n].meter->add_events (Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK); meters[n].meter->signal_button_press_event().connect (sigc::mem_fun (*this, &LevelMeterBase::meter_button_press), false); meters[n].meter->signal_button_release_event().connect (sigc::mem_fun (*this, &LevelMeterBase::meter_button_release), false); - - mtr_pack (*meters[n].meter); - meters[n].meter->show_all (); - meters[n].packed = true; } - } + //pack_end (*meters[n].meter, false, false); + mtr_pack (*meters[n].meter); + meters[n].meter->show_all (); + meters[n].packed = true; + } + //show(); color_changed = false; visible_meter_type = meter_type; } |