summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-07-12 21:16:20 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-07-12 21:16:20 +0000
commitb1ad798b9aaa019c1c7954407fd38f47a825adae (patch)
treecb92bf57f0986781c456a7a6d71ac32258aceec7 /libs
parent163d4b85d1ea727202c9714217fd92dcd4cc81bf (diff)
break recursive loops of Plugin::parameter_changed()->Plugin::ParameterChanged()->Plugin::parameter_changed() ...
git-svn-id: svn://localhost/ardour2/branches/3.0@13036 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ladspa_plugin.cc5
-rw-r--r--libs/ardour/lv2_plugin.cc7
-rw-r--r--libs/ardour/vst_plugin.cc4
3 files changed, 16 insertions, 0 deletions
diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc
index 1b3a5ea2e3..be3fefdaac 100644
--- a/libs/ardour/ladspa_plugin.cc
+++ b/libs/ardour/ladspa_plugin.cc
@@ -279,6 +279,11 @@ void
LadspaPlugin::set_parameter (uint32_t which, float val)
{
if (which < _descriptor->PortCount) {
+
+ if (get_parameter (which) == val) {
+ return;
+ }
+
_shadow_data[which] = (LADSPA_Data) val;
#if 0
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index f8a41c5ecd..62bd9f50ad 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -558,7 +558,14 @@ LV2Plugin::set_parameter(uint32_t which, float val)
"%1 set parameter %2 to %3\n", name(), which, val));
if (which < lilv_plugin_get_num_ports(_impl->plugin)) {
+
+ if (get_parameter (which) == val) {
+ return;
+ }
+
_shadow_data[which] = val;
+
+
} else {
warning << string_compose(
_("Illegal parameter number used with plugin \"%1\". "
diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc
index 7c31dcff10..2bbc65a34e 100644
--- a/libs/ardour/vst_plugin.cc
+++ b/libs/ardour/vst_plugin.cc
@@ -101,6 +101,10 @@ VSTPlugin::get_parameter (uint32_t which) const
void
VSTPlugin::set_parameter (uint32_t which, float val)
{
+ if (get_parameter (which) == val) {
+ return;
+ }
+
_plugin->setParameter (_plugin, which, val);
Plugin::set_parameter (which, val);
}