OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one)
[ardour.git] / libs / ardour / automatable.cc
index 69e8c70741f47ad9f5090ea5f5e38a0e7f655b6d..f85bc83e8549a49e78ce806cb4edc444ee5cc2fd 100644 (file)
@@ -28,6 +28,7 @@
 #include "ardour/amp.h"
 #include "ardour/automatable.h"
 #include "ardour/event_type_map.h"
+#include "ardour/gain_control.h"
 #include "ardour/midi_track.h"
 #include "ardour/pan_controllable.h"
 #include "ardour/pannable.h"
@@ -76,7 +77,7 @@ Automatable::~Automatable ()
 int
 Automatable::old_set_automation_state (const XMLNode& node)
 {
-       const XMLProperty *prop;
+       XMLProperty const * prop;
 
        if ((prop = node.property ("path")) != 0) {
                load_automation (prop->value());
@@ -219,7 +220,7 @@ Automatable::set_automation_xml_state (const XMLNode& node, Evoral::Parameter le
 
                if ((*niter)->name() == "AutomationList") {
 
-                       const XMLProperty* id_prop = (*niter)->property("automation-id");
+                       XMLProperty const * id_prop = (*niter)->property("automation-id");
 
                        Evoral::Parameter param = (id_prop
                                        ? EventTypeMap::instance().from_symbol(id_prop->value())
@@ -365,7 +366,7 @@ Automatable::transport_located (framepos_t now)
                         boost::shared_ptr<AutomationList> l
                                = boost::dynamic_pointer_cast<AutomationList>(c->list());
 
-                       if (l && l->automation_state () == Write) {
+                       if (l) {
                                l->start_write_pass (now);
                        }
                }
@@ -398,9 +399,7 @@ Automatable::transport_stopped (framepos_t now)
 
                l->stop_touch (true, now);
 
-               if (list_did_write) {
-                       c->commit_transaction ();
-               }
+               c->commit_transaction (list_did_write);
 
                l->write_pass_finished (now, Config->get_automation_thinning_factor ());
 
@@ -451,19 +450,9 @@ Automatable::control_factory(const Evoral::Parameter& param)
                        warning << "PluginPropertyAutomation for non-Plugin" << endl;
                }
        } else if (param.type() == GainAutomation) {
-               Amp* amp = dynamic_cast<Amp*>(this);
-               if (amp) {
-                       control = new Amp::GainControl(X_("gaincontrol"), _a_session, amp, param);
-               } else {
-                       warning << "GainAutomation for non-Amp" << endl;
-               }
+               control = new GainControl(_a_session, param);
        } else if (param.type() == TrimAutomation) {
-               Amp* amp = dynamic_cast<Amp*>(this);
-               if (amp) {
-                       control = new Amp::GainControl(X_("trimcontrol"), _a_session, amp, param);
-               } else {
-                       warning << "TrimAutomation for non-Amp" << endl;
-               }
+               control = new GainControl(_a_session, param);
        } else if (param.type() == PanAzimuthAutomation || param.type() == PanWidthAutomation || param.type() == PanElevationAutomation) {
                Pannable* pannable = dynamic_cast<Pannable*>(this);
                if (pannable) {