}
if (as == Write) {
- /* get state for undo */
- _before = &alist ()->get_state ();
AutomationWatch::instance().add_automation_watch (shared_from_this());
} else if (as == Touch) {
if (!touching()) {
if (alist()->automation_state() == Touch) {
/* subtle. aligns the user value with the playback */
set_value (get_value ());
- _before = &alist ()->get_state ();
alist()->start_touch (when);
if (!_desc.toggled) {
AutomationWatch::instance().add_automation_watch (shared_from_this());
if (touching()) {
set_touching (false);
- if (alist()->automation_state() == Write) {
- _session.begin_reversible_command (string_compose (_("write %1 automation"), name ()));
- _session.add_command (new MementoCommand<AutomationList> (*alist ().get (), _before, &alist ()->get_state ()));
- _session.commit_reversible_command ();
- }
-
if (alist()->automation_state() == Touch) {
alist()->stop_touch (mark, when);
if (!_desc.toggled) {
AutomationWatch::instance().remove_automation_watch (shared_from_this());
- }
- _session.begin_reversible_command (string_compose (_("touch %1 automation"), name ()));
- _session.add_command (new MementoCommand<AutomationList> (*alist ().get (), _before, &alist ()->get_state ()));
- _session.commit_reversible_command ();
+ }
}
}
}
+void
+AutomationControl::commit_transaction ()
+{
+ if (alist ()->before ()) {
+ _session.begin_reversible_command (string_compose (_("record %1 automation"), name ()));
+ _session.commit_reversible_command (new MementoCommand<AutomationList> (*alist ().get (), alist ()->before (), &alist ()->get_state ()));
+ }
+}
+
double
AutomationControl::internal_to_interface (double val) const
{