Fix another crash at exit.
[ardour.git] / gtk2_ardour / generic_pluginui.cc
index 4267d30a43362b4ae7338599d6a381dff7e9bf28..bcc91a673d6a8af43febb1b510f55f496fc784aa 100644 (file)
@@ -730,6 +730,8 @@ GenericPluginUI::build_control_ui (const Evoral::Parameter&             param,
                                                           i->second)));
                        }
 
+                       control_ui->combo->set_controllable (mcontrol);
+
                        update_control_display(control_ui);
 
                } else {
@@ -759,6 +761,7 @@ GenericPluginUI::build_control_ui (const Evoral::Parameter&             param,
                                } else {
                                        control_ui->clickbox->set_printer (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::integer_printer), control_ui));
                                }
+                               control_ui->clickbox->set_controllable (mcontrol);
                        } else if (desc.toggled) {
                                ArdourButton* but = dynamic_cast<ArdourButton*> (control_ui->controller->widget());
                                assert(but);
@@ -1089,11 +1092,7 @@ GenericPluginUI::output_update ()
                (*i)->display_label->set_text (buf);
 
                if ((*i)->meterinfo && (*i)->meterinfo->packed) {
-                       const float upper = c->desc().upper;
-                       const float lower = c->desc().lower;
-                       val = std::min (upper, std::max (lower, val));
-                       float lval = (val - lower / (upper - lower));
-                       (*i)->meterinfo->meter->set (lval);
+                       (*i)->meterinfo->meter->set (c->desc().to_interface (val));
                }
        }
 }