Micro-optimization: only recreate polarity buttons as needed

This commit is contained in:
Robin Gareus 2020-03-02 19:18:30 +01:00
parent 6120d4d43a
commit e79b762daa
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
2 changed files with 9 additions and 2 deletions

View File

@ -2009,6 +2009,13 @@ RouteUI::parameter_changed (string const & p)
void
RouteUI::setup_invert_buttons ()
{
uint32_t const N = _route ? _route->phase_control()->size() : 0;
if (_n_polarity_invert == N) {
return;
}
_n_polarity_invert = N;
/* remove old invert buttons */
for (vector<ArdourButton*>::iterator i = _invert_buttons.begin(); i != _invert_buttons.end(); ++i) {
_invert_button_box.remove (**i);
@ -2016,11 +2023,10 @@ RouteUI::setup_invert_buttons ()
_invert_buttons.clear ();
if (!_route) {
if (N == 0) {
return;
}
uint32_t const N = _route->phase_control()->size();
uint32_t const to_add = (N <= _max_invert_buttons) ? N : 1;
for (uint32_t i = 0; i < to_add; ++i) {

View File

@ -345,6 +345,7 @@ private:
int _i_am_the_modifier;
std::vector<ArdourWidgets::ArdourButton*> _invert_buttons;
Gtk::Menu* _invert_menu;
uint32_t _n_polarity_invert;
StripableColorDialog _color_picker;