diff options
author | Carl Hetherington <carl@carlh.net> | 2011-02-15 01:42:48 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2011-02-15 01:42:48 +0000 |
commit | ea11968f95c626fcba3f31423ed9de13c258bcdc (patch) | |
tree | 051d0df74da5196f0c3032cfa7c34d2df46184e5 /gtk2_ardour/generic_pluginui.cc | |
parent | 4aaa507472ebc7752b32bb4398e694120acd98ee (diff) |
Clean up and hopefully fix handling of logarithmic plugin parameters (fixes #3769).
git-svn-id: svn://localhost/ardour2/branches/3.0@8850 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/generic_pluginui.cc')
-rw-r--r-- | gtk2_ardour/generic_pluginui.cc | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc index 9204912a36..fdf0d62482 100644 --- a/gtk2_ardour/generic_pluginui.cc +++ b/gtk2_ardour/generic_pluginui.cc @@ -494,19 +494,10 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat */ Adjustment* adj = control_ui->controller->adjustment(); + boost::shared_ptr<PluginInsert::PluginControl> pc = boost::dynamic_pointer_cast<PluginInsert::PluginControl> (control_ui->control); - adj->set_lower (desc.lower); - adj->set_upper (desc.upper); - - control_ui->logarithmic = desc.logarithmic; - - if (control_ui->logarithmic) { - if (adj->get_lower() == 0.0) { - adj->set_lower (adj->get_upper()/10000); - } - adj->set_upper (log(adj->get_upper())); - adj->set_lower (log(adj->get_lower())); - } + adj->set_lower (pc->user_to_ui (desc.lower)); + adj->set_upper (pc->user_to_ui (desc.upper)); adj->set_step_increment (desc.step); adj->set_page_increment (desc.largestep); @@ -522,23 +513,14 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat control_ui->controller->set_name (X_("PluginSlider")); control_ui->controller->set_style (BarController::LeftToRight); control_ui->controller->set_use_parent (true); - control_ui->controller->set_logarithmic (control_ui->logarithmic); + control_ui->controller->set_logarithmic (desc.logarithmic); control_ui->controller->StartGesture.connect (sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::start_touch), control_ui)); control_ui->controller->StopGesture.connect (sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::stop_touch), control_ui)); } - if (control_ui->logarithmic) { - double val = plugin->get_parameter (port_index); - if (isnan (val) || val <= 0.0) { - adj->set_value (0.0); - } else { - adj->set_value (log(val)); - } - } else{ - adj->set_value(plugin->get_parameter(port_index)); - } + adj->set_value (pc->plugin_to_ui (plugin->get_parameter (port_index))); /* XXX memory leak: SliderController not destroyed by ControlUI destructor, and manage() reports object hierarchy |