X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fautomatable.cc;h=65b83b4b6ea03fb4a701f4017074df2a60f34b79;hb=5fcea5833df6f8562126683521f3c2ad6cb9f1e9;hp=3dad4ccd314b62febedb87425e18274f10b19672;hpb=3899c06fae96c09a04a2bc63a414a1fcfa847557;p=ardour.git diff --git a/libs/ardour/automatable.cc b/libs/ardour/automatable.cc index 3dad4ccd31..65b83b4b6e 100644 --- a/libs/ardour/automatable.cc +++ b/libs/ardour/automatable.cc @@ -48,6 +48,9 @@ using namespace std; using namespace ARDOUR; using namespace PBD; +/* used for templates (previously: !full_state) */ +bool Automatable::skip_saving_automation = false; + const string Automatable::xml_node_name = X_("Automation"); Automatable::Automatable(Session& session) @@ -57,6 +60,7 @@ Automatable::Automatable(Session& session) Automatable::Automatable (const Automatable& other) : ControlSet (other) + , Slavable () , _a_session (other._a_session) { Glib::Threads::Mutex::Lock lm (other._control_lock); @@ -328,6 +332,8 @@ Automatable::protect_automation () case Write: l->set_automation_state (Off); break; + case Latch: + // no break case Touch: l->set_automation_state (Play); break; @@ -338,7 +344,7 @@ Automatable::protect_automation () } void -Automatable::non_realtime_locate (framepos_t now) +Automatable::non_realtime_locate (samplepos_t now) { bool rolling = _a_session.transport_rolling (); @@ -384,7 +390,7 @@ Automatable::non_realtime_locate (framepos_t now) } void -Automatable::non_realtime_transport_stop (framepos_t now, bool /*flush_processors*/) +Automatable::non_realtime_transport_stop (samplepos_t now, bool /*flush_processors*/) { for (Controls::iterator li = controls().begin(); li != controls().end(); ++li) { boost::shared_ptr c = @@ -407,6 +413,7 @@ Automatable::non_realtime_transport_stop (framepos_t now, bool /*flush_processor */ const bool list_did_write = !l->in_new_write_pass (); + c->stop_touch (now); l->stop_touch (now); c->commit_transaction (list_did_write); @@ -424,7 +431,7 @@ Automatable::non_realtime_transport_stop (framepos_t now, bool /*flush_processor } void -Automatable::automation_run (framepos_t start, pframes_t nframes) +Automatable::automation_run (samplepos_t start, pframes_t nframes) { for (Controls::iterator li = controls().begin(); li != controls().end(); ++li) { boost::shared_ptr c =