From: David Robillard Date: Wed, 14 Jan 2009 15:47:58 +0000 (+0000) Subject: Apply LV2 GUI parameter update patch from kfoltman. X-Git-Tag: 3.0-alpha5~3851 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=ad9913538e903359de700432459f559794f2e80d;p=ardour.git Apply LV2 GUI parameter update patch from kfoltman. git-svn-id: svn://localhost/ardour2/branches/3.0@4407 d708f5d6-7413-0410-9779-e7cbd77b26cf --- diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index d18f7d80ce..02af81cbf0 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -44,14 +44,20 @@ void LV2PluginUI::parameter_changed (uint32_t port_index, float val) { if (val != _values[port_index]) { - const LV2UI_Descriptor* ui_desc = slv2_ui_instance_get_descriptor(_inst); - LV2UI_Handle ui_handle = slv2_ui_instance_get_handle(_inst); - if (ui_desc->port_event) - ui_desc->port_event(ui_handle, port_index, 4, 0, &val); - _values[port_index] = val; + parameter_update(port_index, val); } } +void +LV2PluginUI::parameter_update (uint32_t port_index, float val) +{ + const LV2UI_Descriptor* ui_desc = slv2_ui_instance_get_descriptor(_inst); + LV2UI_Handle ui_handle = slv2_ui_instance_get_handle(_inst); + if (ui_desc->port_event) + ui_desc->port_event(ui_handle, port_index, 4, 0, &val); + _values[port_index] = val; +} + bool LV2PluginUI::start_updating(GdkEventAny* event) { @@ -107,9 +113,13 @@ LV2PluginUI::LV2PluginUI (boost::shared_ptr pi, boost::shared_ptr< _values = new float[num_ports]; for (uint32_t i = 0; i < num_ports; ++i) { bool ok; - _values[i] = lv2p->nth_parameter(i, ok); - if (ok) - lv2_ui_write(this, i, 4, /* FIXME: format */0, &_values[i]); + uint32_t port = lv2p->nth_parameter(i, ok); + if (ok) { + _values[port] = lv2p->get_parameter(port); + if (lv2p->parameter_is_control(port) && lv2p->parameter_is_input(port)) { + parameter_update(port, _values[port]); + } + } } _lv2->ParameterChanged.connect(mem_fun(*this, &LV2PluginUI::parameter_changed)); diff --git a/gtk2_ardour/lv2_plugin_ui.h b/gtk2_ardour/lv2_plugin_ui.h index 1af023974c..fe8dd85cd2 100644 --- a/gtk2_ardour/lv2_plugin_ui.h +++ b/gtk2_ardour/lv2_plugin_ui.h @@ -69,6 +69,7 @@ class LV2PluginUI : public PlugUIBase, public Gtk::VBox const void* buffer); void parameter_changed(uint32_t, float); + void parameter_update(uint32_t, float); bool configure_handler (GdkEventConfigure*); void save_plugin_setting (); void output_update();