X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fautomation_list.cc;h=4b23378cacd1275e0d170fb660682ac177bca556;hb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;hp=636a1bbede60a42b3b8004b3a08a9a989541c734;hpb=de23c3d3aec7b6940cf60b85eb14920e17e5151d;p=ardour.git diff --git a/libs/ardour/automation_list.cc b/libs/ardour/automation_list.cc index 636a1bbede..4b23378cac 100644 --- a/libs/ardour/automation_list.cc +++ b/libs/ardour/automation_list.cc @@ -31,7 +31,7 @@ #include "pbd/stacktrace.h" #include "pbd/enumwriter.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace ARDOUR; @@ -131,6 +131,7 @@ AutomationList::AutomationList (const XMLNode& node, Evoral::Parameter id) AutomationList::~AutomationList() { + delete _before; } boost::shared_ptr @@ -192,8 +193,11 @@ AutomationList::set_automation_state (AutoState s) { if (s != _state) { _state = s; + delete _before; if (s == Write && _desc.toggled) { _before = &get_state (); + } else { + _before = 0; } automation_state_changed (s); /* EMIT SIGNAL */ } @@ -211,8 +215,11 @@ AutomationList::set_automation_style (AutoStyle s) void AutomationList::start_write_pass (double when) { + delete _before; if (in_new_write_pass ()) { _before = &get_state (); + } else { + _before = 0; } ControlList::start_write_pass (when); } @@ -221,8 +228,6 @@ void AutomationList::write_pass_finished (double when, double thinning_factor) { ControlList::write_pass_finished (when, thinning_factor); - /* automation control has deleted this or it is now owned by the session undo stack */ - _before = 0; } void @@ -260,7 +265,9 @@ AutomationList::stop_touch (bool mark, double) /* _before may be owned by the undo stack, * so we have to be careful about doing this. -*/ + * + * ::before () transfers ownership, setting _before to 0 + */ void AutomationList::clear_history () { @@ -296,7 +303,7 @@ AutomationList::state (bool full) { XMLNode* root = new XMLNode (X_("AutomationList")); char buf[64]; - LocaleGuard lg (X_("C")); + LocaleGuard lg; root->add_property ("automation-id", EventTypeMap::instance().to_symbol(_parameter)); @@ -414,11 +421,11 @@ AutomationList::deserialize_events (const XMLNode& node) int AutomationList::set_state (const XMLNode& node, int version) { - LocaleGuard lg (X_("C")); + LocaleGuard lg; XMLNodeList nlist = node.children(); XMLNode* nsos; XMLNodeIterator niter; - const XMLProperty* prop; + XMLProperty const * prop; if (node.name() == X_("events")) { /* partial state setting*/ @@ -436,7 +443,7 @@ AutomationList::set_state (const XMLNode& node, int version) const XMLNodeList& elist = node.children(); XMLNodeConstIterator i; - XMLProperty* prop; + XMLProperty const * prop; pframes_t x; double y;