summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-10-13 17:29:22 +0000
committerDavid Robillard <d@drobilla.net>2008-10-13 17:29:22 +0000
commitb3634a723d98baf19e310ef7dba52534963cf4e8 (patch)
tree47cda70f2e55d350dc5a65ee1dee7df0b535eb25
parent2065092d256eea0aa02ca32c27e91750b0b5f94e (diff)
Fix wrongly exposed set_parameter methods on PluginInsert.
Have plugin GUI stuff twiddle plugin parameters correctly. git-svn-id: svn://localhost/ardour2/branches/3.0@3957 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/generic_pluginui.cc5
-rw-r--r--libs/ardour/ardour/automatable.h6
-rw-r--r--libs/ardour/ardour/panner.h8
-rw-r--r--libs/ardour/ardour/plugin_insert.h10
-rw-r--r--libs/ardour/automatable.cc12
5 files changed, 29 insertions, 12 deletions
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc
index 56fa8483b7..a42aa6b9bc 100644
--- a/gtk2_ardour/generic_pluginui.cc
+++ b/gtk2_ardour/generic_pluginui.cc
@@ -683,7 +683,7 @@ void
GenericPluginUI::control_port_toggled (ControlUI* cui)
{
if (!cui->ignore_change) {
- insert->set_parameter (cui->parameter(), cui->button->get_active());
+ insert->automation_control(cui->parameter())->set_value(cui->button->get_active());
}
}
@@ -693,9 +693,8 @@ GenericPluginUI::control_combo_changed (ControlUI* cui)
if (!cui->ignore_change) {
string value = cui->combo->get_active_text();
std::map<string,float> mapping = *cui->combo_map;
- insert->set_parameter (cui->parameter(), mapping[value]);
+ insert->automation_control(cui->parameter())->set_value(mapping[value]);
}
-
}
void
diff --git a/libs/ardour/ardour/automatable.h b/libs/ardour/ardour/automatable.h
index 8cfadec638..fc61e2200d 100644
--- a/libs/ardour/ardour/automatable.h
+++ b/libs/ardour/ardour/automatable.h
@@ -50,6 +50,12 @@ public:
boost::shared_ptr<Evoral::Control>
control_factory(const Evoral::Parameter& id);
+ boost::shared_ptr<AutomationControl>
+ automation_control (const Evoral::Parameter& id, bool create_if_missing=false);
+
+ boost::shared_ptr<const AutomationControl>
+ automation_control (const Evoral::Parameter& id) const;
+
virtual void add_control(boost::shared_ptr<Evoral::Control>);
virtual void automation_snapshot(nframes_t now, bool force);
diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h
index 7019f5e5ac..f523f431c4 100644
--- a/libs/ardour/ardour/panner.h
+++ b/libs/ardour/ardour/panner.h
@@ -290,12 +290,12 @@ class Panner : public Processor
float get_value (void) const;
};
- boost::shared_ptr<AutomationControl> pan_control ( int id, int chan=0 ) {
- return boost::dynamic_pointer_cast<AutomationControl>( control( Evoral::Parameter (PanAutomation, chan, id) ));
+ boost::shared_ptr<AutomationControl> pan_control (int id, int chan=0) {
+ return automation_control(Evoral::Parameter (PanAutomation, chan, id));
}
- boost::shared_ptr<const AutomationControl> pan_control ( int id, int chan=0 ) const {
- return boost::dynamic_pointer_cast<const AutomationControl>( control( Evoral::Parameter (PanAutomation, chan, id) ));
+ boost::shared_ptr<const AutomationControl> pan_control (int id, int chan=0) const {
+ return automation_control(Evoral::Parameter (PanAutomation, chan, id));
}
private:
diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h
index 25a9e52e88..d83b41d1e0 100644
--- a/libs/ardour/ardour/plugin_insert.h
+++ b/libs/ardour/ardour/plugin_insert.h
@@ -74,11 +74,6 @@ class PluginInsert : public Processor
bool is_generator() const;
- void set_parameter (Evoral::Parameter param, float val);
- float get_parameter (Evoral::Parameter param);
-
- float default_parameter_value (const Evoral::Parameter& param);
-
struct PluginControl : public AutomationControl
{
PluginControl (PluginInsert* p, const Evoral::Parameter &param,
@@ -111,6 +106,11 @@ class PluginInsert : public Processor
void parameter_changed (Evoral::Parameter, float);
+ void set_parameter (Evoral::Parameter param, float val);
+ float get_parameter (Evoral::Parameter param);
+
+ float default_parameter_value (const Evoral::Parameter& param);
+
std::vector<boost::shared_ptr<Plugin> > _plugins;
void automation_run (BufferSet& bufs, nframes_t nframes, nframes_t offset);
diff --git a/libs/ardour/automatable.cc b/libs/ardour/automatable.cc
index c145c3c501..6daeb99669 100644
--- a/libs/ardour/automatable.cc
+++ b/libs/ardour/automatable.cc
@@ -417,3 +417,15 @@ Automatable::control_factory(const Evoral::Parameter& param)
return boost::shared_ptr<Evoral::Control>(control);
}
+boost::shared_ptr<AutomationControl>
+Automatable::automation_control (const Evoral::Parameter& id, bool create)
+{
+ return boost::dynamic_pointer_cast<AutomationControl>(Evoral::ControlSet::control(id, create));
+}
+
+boost::shared_ptr<const AutomationControl>
+Automatable::automation_control (const Evoral::Parameter& id) const
+{
+ return boost::dynamic_pointer_cast<const AutomationControl>(Evoral::ControlSet::control(id));
+}
+