don't double-load NestedSource nodes, which are listed both forthe parent/root region and all children; even better, don't list them twice anyway - just for the whole file parent/root region
git-svn-id: svn://localhost/ardour2/branches/3.0@9761 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
ae3c7234e7
commit
7181a20dc6
|
@ -1207,7 +1207,11 @@ Region::state ()
|
|||
node->add_property (buf2, buf);
|
||||
}
|
||||
|
||||
if (max_source_level() > 0) {
|
||||
/* Only store nested sources for the whole-file region that acts
|
||||
as the parent/root of all regions using it.
|
||||
*/
|
||||
|
||||
if (_whole_file && max_source_level() > 0) {
|
||||
|
||||
XMLNode* nested_node = new XMLNode (X_("NestedSource"));
|
||||
|
||||
|
|
|
@ -1660,11 +1660,26 @@ Session::load_nested_sources (const XMLNode& node)
|
|||
|
||||
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
|
||||
if ((*niter)->name() == "Source") {
|
||||
try {
|
||||
SourceFactory::create (*this, **niter, true);
|
||||
|
||||
/* it may already exist, so don't recreate it unnecessarily
|
||||
*/
|
||||
|
||||
XMLProperty* prop = (*niter)->property (X_("id"));
|
||||
if (!prop) {
|
||||
error << _("Nested source has no ID info in session state file! (ignored)") << endmsg;
|
||||
continue;
|
||||
}
|
||||
catch (failed_constructor& err) {
|
||||
error << string_compose (_("Cannot reconstruct nested source for region %1"), name()) << endmsg;
|
||||
|
||||
ID source_id (prop->value());
|
||||
|
||||
if (!source_by_id (source_id)) {
|
||||
|
||||
try {
|
||||
SourceFactory::create (*this, **niter, true);
|
||||
}
|
||||
catch (failed_constructor& err) {
|
||||
error << string_compose (_("Cannot reconstruct nested source for region %1"), name()) << endmsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -155,12 +155,13 @@ SourceFactory::create (Session& s, const XMLNode& node, bool defer_peaks)
|
|||
|
||||
try {
|
||||
boost::shared_ptr<AudioPlaylistSource> ap (new AudioPlaylistSource (s, node));
|
||||
|
||||
|
||||
if (setup_peakfile (ap, true)) {
|
||||
return boost::shared_ptr<Source>();
|
||||
}
|
||||
|
||||
ap->check_for_analysis_data_on_disk ();
|
||||
|
||||
SourceCreated (ap);
|
||||
return ap;
|
||||
|
||||
|
|
Loading…
Reference in New Issue