+ /* drop references to the plugin/insert */
+ insert.reset ();
+ plugin.reset ();
+ death_connection.disconnect ();
+}
+
+void
+PlugUIBase::set_latency_label ()
+{
+ framecnt_t const l = insert->effective_latency ();
+ framecnt_t const sr = insert->session().frame_rate ();
+
+ string t;
+
+ if (l < sr / 1000) {
+ t = string_compose (_("latency (%1 samples)"), l);
+ } else {
+ t = string_compose (_("latency (%1 ms)"), (float) l / ((float) sr / 1000.0f));
+ }
+
+ latency_label.set_text (t);
+}
+
+void
+PlugUIBase::latency_button_clicked ()
+{
+ if (!latency_gui) {
+ latency_gui = new LatencyGUI (*(insert.get()), insert->session().frame_rate(), insert->session().get_block_size());
+ latency_dialog = new ArdourWindow (_("Edit Latency"));
+ latency_dialog->add (*latency_gui);
+ latency_dialog->signal_hide().connect (sigc::mem_fun (*this, &PlugUIBase::set_latency_label));
+ }
+
+ latency_dialog->show_all ();
+}
+
+void
+PlugUIBase::processor_active_changed (boost::weak_ptr<Processor> weak_p)
+{
+ ENSURE_GUI_THREAD (*this, &PlugUIBase::processor_active_changed, weak_p);
+ boost::shared_ptr<Processor> p (weak_p.lock());
+
+ if (p) {
+ bypass_button.set_active (!p->active());
+ }
+}
+
+void
+PlugUIBase::preset_selected ()
+{
+ if (_no_load_preset) {
+ return;
+ }
+
+ if (_preset_combo.get_active_text().length() > 0) {
+ const Plugin::PresetRecord* pr = plugin->preset_by_label (_preset_combo.get_active_text());
+ if (pr) {
+ plugin->load_preset (*pr);
+ } else {
+ warning << string_compose(_("Plugin preset %1 not found"),
+ _preset_combo.get_active_text()) << endmsg;