make LED meter style optional
[ardour.git] / libs / ardour / ladspa_plugin.cc
index 1b3a5ea2e3d952597cb470451bff7582b9441aef..1ab00e0b34e3f3f1485f0b6e7c90d8d97f826de8 100644 (file)
@@ -34,6 +34,7 @@
 #include "pbd/compose.h"
 #include "pbd/error.h"
 #include "pbd/xml++.h"
+#include "pbd/stacktrace.h"
 
 #include "midi++/manager.h"
 
@@ -279,6 +280,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
@@ -288,8 +294,8 @@ LadspaPlugin::set_parameter (uint32_t which, float val)
 #endif
 
        } else {
-               warning << string_compose (_("illegal parameter number used with plugin \"%1\". This may"
-                                            "indicate a change in the plugin design, and presets may be"
+               warning << string_compose (_("illegal parameter number used with plugin \"%1\". This may "
+                                            "indicate a change in the plugin design, and presets may be "
                                             "invalid"), name())
                        << endmsg;
        }
@@ -355,6 +361,7 @@ LadspaPlugin::set_state (const XMLNode& node, int version)
                return set_state_2X (node, version);
        }
 
+#ifndef NO_PLUGIN_STATE
        XMLNodeList nodes;
        XMLProperty *prop;
        XMLNodeConstIterator iter;
@@ -362,6 +369,7 @@ LadspaPlugin::set_state (const XMLNode& node, int version)
        const char *port;
        const char *data;
        uint32_t port_id;
+#endif
        LocaleGuard lg (X_("POSIX"));
 
        if (node.name() != state_node_name()) {
@@ -369,6 +377,8 @@ LadspaPlugin::set_state (const XMLNode& node, int version)
                return -1;
        }
 
+#ifndef NO_PLUGIN_STATE
+
        nodes = node.children ("Port");
 
        for (iter = nodes.begin(); iter != nodes.end(); ++iter) {
@@ -391,6 +401,7 @@ LadspaPlugin::set_state (const XMLNode& node, int version)
                sscanf (port, "%" PRIu32, &port_id);
                set_parameter (port_id, atof(data));
        }
+#endif
 
        latency_compute_run ();
 
@@ -400,6 +411,7 @@ LadspaPlugin::set_state (const XMLNode& node, int version)
 int
 LadspaPlugin::set_state_2X (const XMLNode& node, int /* version */)
 {
+#ifndef NO_PLUGIN_STATE
        XMLNodeList nodes;
        XMLProperty *prop;
        XMLNodeConstIterator iter;
@@ -407,6 +419,7 @@ LadspaPlugin::set_state_2X (const XMLNode& node, int /* version */)
        const char *port;
        const char *data;
        uint32_t port_id;
+#endif
        LocaleGuard lg (X_("POSIX"));
 
        if (node.name() != state_node_name()) {
@@ -414,6 +427,7 @@ LadspaPlugin::set_state_2X (const XMLNode& node, int /* version */)
                return -1;
        }
 
+#ifndef NO_PLUGIN_STATE
        nodes = node.children ("port");
 
        for(iter = nodes.begin(); iter != nodes.end(); ++iter){
@@ -438,6 +452,7 @@ LadspaPlugin::set_state_2X (const XMLNode& node, int /* version */)
        }
 
        latency_compute_run ();
+#endif
 
        return 0;
 }