X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fautomation_list.cc;h=54d838f6e286c87b72d3cf4e632f2ab4cb6e43f6;hb=eaf58fdd50a79aa4fa2760ca5dbeb2dd4cda2e15;hp=aaab84f2da7b50d07163d303f042e36f7631b8fa;hpb=b25ef3ae69b83c78da4d98aba32b19eea0d3aac0;p=ardour.git diff --git a/libs/ardour/automation_list.cc b/libs/ardour/automation_list.cc index aaab84f2da..54d838f6e2 100644 --- a/libs/ardour/automation_list.cc +++ b/libs/ardour/automation_list.cc @@ -156,7 +156,6 @@ AutomationList::operator= (const AutomationList& other) _min_yval = other._min_yval; _max_yval = other._max_yval; - _max_xval = other._max_xval; _default_value = other._default_value; mark_dirty (); @@ -219,7 +218,7 @@ AutomationList::stop_touch (bool mark, double when) */ return; } - + g_atomic_int_set (&_touching, 0); if (_state == Touch) { @@ -227,13 +226,13 @@ AutomationList::stop_touch (bool mark, double when) assert (!nascent.empty ()); Glib::Mutex::Lock lm (ControlList::_lock); - + if (mark) { nascent.back()->end_time = when; - + } else { - + /* nascent info created in start touch but never used. just get rid of it. */ @@ -270,7 +269,7 @@ AutomationList::state (bool full) root->add_property ("automation-id", EventTypeMap::instance().to_symbol(_parameter)); - root->add_property ("id", _id.to_s()); + root->add_property ("id", id().to_s()); snprintf (buf, sizeof (buf), "%.12g", _default_value); root->add_property ("default", buf); @@ -278,8 +277,6 @@ AutomationList::state (bool full) root->add_property ("min-yval", buf); snprintf (buf, sizeof (buf), "%.12g", _max_yval); root->add_property ("max-yval", buf); - snprintf (buf, sizeof (buf), "%.12g", _max_xval); - root->add_property ("max-xval", buf); root->add_property ("interpolation-style", enum_2_string (_interpolation)); @@ -366,6 +363,8 @@ AutomationList::deserialize_events (const XMLNode& node) fast_simple_add (x, y); } + thin (); + if (!ok) { clear (); error << _("automation list: cannot load coordinates from XML, all points ignored") << endmsg; @@ -382,6 +381,7 @@ AutomationList::deserialize_events (const XMLNode& node) int AutomationList::set_state (const XMLNode& node, int version) { + LocaleGuard lg (X_("POSIX")); XMLNodeList nlist = node.children(); XMLNode* nsos; XMLNodeIterator niter; @@ -427,6 +427,8 @@ AutomationList::set_state (const XMLNode& node, int version) fast_simple_add (x, y); } + thin (); + thaw (); return 0; @@ -437,8 +439,7 @@ AutomationList::set_state (const XMLNode& node, int version) return -1; } - if ((prop = node.property ("id")) != 0) { - _id = prop->value (); + if (set_id (node)) { /* update session AL list */ AutomationListCreated(this); } @@ -488,14 +489,8 @@ AutomationList::set_state (const XMLNode& node, int version) _max_yval = FLT_MAX; } - if ((prop = node.property (X_("max-xval"))) != 0) { - _max_xval = atof (prop->value ().c_str()); - } else { - _max_xval = 0; // means "no limit ; - } - bool have_events = false; - + for (niter = nlist.begin(); niter != nlist.end(); ++niter) { if ((*niter)->name() == X_("events")) { deserialize_events (*(*niter));