mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 12:16:30 +01:00
Convert 2.X route extra-xml to 3.0 format when it is loaded, to prevent multiple near-duplicate extra XML nodes in the resultant 3.0 session file.
git-svn-id: svn://localhost/ardour2/branches/3.0@8014 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
a0b75ed66e
commit
08b303c334
2 changed files with 29 additions and 12 deletions
|
|
@ -94,7 +94,6 @@ RouteUI::init ()
|
||||||
{
|
{
|
||||||
self_destruct = true;
|
self_destruct = true;
|
||||||
xml_node = 0;
|
xml_node = 0;
|
||||||
_xml_node_version = Stateful::current_state_version;
|
|
||||||
mute_menu = 0;
|
mute_menu = 0;
|
||||||
solo_menu = 0;
|
solo_menu = 0;
|
||||||
sends_menu = 0;
|
sends_menu = 0;
|
||||||
|
|
@ -1269,7 +1268,32 @@ RouteUI::ensure_xml_node ()
|
||||||
_route->add_extra_xml (*xml_node);
|
_route->add_extra_xml (*xml_node);
|
||||||
} else {
|
} else {
|
||||||
/* the Route has one, so it must have been loaded */
|
/* the Route has one, so it must have been loaded */
|
||||||
_xml_node_version = Stateful::loading_state_version;
|
if (Stateful::loading_state_version < 3000) {
|
||||||
|
/* the GUI extra XML is in 2.X format; we must convert it to the new
|
||||||
|
format to avoid problems later
|
||||||
|
*/
|
||||||
|
|
||||||
|
XMLNode* new_xml_node = new XMLNode (X_("GUI"));
|
||||||
|
XMLPropertyList old_gui_props = xml_node->properties ();
|
||||||
|
for (XMLPropertyIterator i = old_gui_props.begin(); i != old_gui_props.end(); ++i) {
|
||||||
|
new_xml_node->add_property ((*i)->name().c_str (), (*i)->value().c_str ());
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLNodeList old_children = xml_node->children ();
|
||||||
|
for (XMLNodeConstIterator i = old_children.begin(); i != old_children.end(); ++i) {
|
||||||
|
XMLNode* new_child = new XMLNode (AutomationTimeAxisView::state_node_name);
|
||||||
|
new_child->add_property (X_("automation-id"), (*i)->name());
|
||||||
|
|
||||||
|
XMLPropertyList old_props = (*i)->properties ();
|
||||||
|
for (XMLPropertyIterator j = old_props.begin(); j != old_props.end(); ++j) {
|
||||||
|
new_child->add_property ((*j)->name().c_str (), (*j)->value().c_str ());
|
||||||
|
}
|
||||||
|
|
||||||
|
new_xml_node->add_child_nocopy (*new_child);
|
||||||
|
}
|
||||||
|
|
||||||
|
_route->add_extra_xml (*new_xml_node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1286,17 +1310,11 @@ RouteUI::get_automation_child_xml_node (Evoral::Parameter param)
|
||||||
|
|
||||||
for (iter = kids.begin(); iter != kids.end(); ++iter) {
|
for (iter = kids.begin(); iter != kids.end(); ++iter) {
|
||||||
|
|
||||||
if (_xml_node_version < 3000) {
|
if ((*iter)->name() == AutomationTimeAxisView::state_node_name) {
|
||||||
if ((*iter)->name() == sym) {
|
XMLProperty* type = (*iter)->property("automation-id");
|
||||||
|
if (type && type->value() == sym) {
|
||||||
return *iter;
|
return *iter;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if ((*iter)->name() == AutomationTimeAxisView::state_node_name) {
|
|
||||||
XMLProperty* type = (*iter)->property("automation-id");
|
|
||||||
if (type && type->value() == sym) {
|
|
||||||
return *iter;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,6 @@ class RouteUI : public virtual AxisView
|
||||||
|
|
||||||
XMLNode *xml_node;
|
XMLNode *xml_node;
|
||||||
void ensure_xml_node ();
|
void ensure_xml_node ();
|
||||||
int _xml_node_version;
|
|
||||||
|
|
||||||
virtual XMLNode* get_automation_child_xml_node (Evoral::Parameter);
|
virtual XMLNode* get_automation_child_xml_node (Evoral::Parameter);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue