diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-30 19:30:38 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-30 19:30:38 +0000 |
commit | bfefff3588d06ac14db6cca04222628c42953064 (patch) | |
tree | 8c58ee128cffc2bbcfc7457507a078e3836cb38b /libs/ardour/audio_playlist.cc | |
parent | 71dd60c7365ef37e6ce516dce528fb2611fb80bc (diff) |
rethink how to load legacy crossfades as new-style xfades
git-svn-id: svn://localhost/ardour2/branches/3.0@12496 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/audio_playlist.cc')
-rw-r--r-- | libs/ardour/audio_playlist.cc | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/libs/ardour/audio_playlist.cc b/libs/ardour/audio_playlist.cc index b157d68545..0054b6a177 100644 --- a/libs/ardour/audio_playlist.cc +++ b/libs/ardour/audio_playlist.cc @@ -669,46 +669,46 @@ AudioPlaylist::set_state (const XMLNode& node, int version) XMLProperty* p = (*i)->property (X_("active")); assert (p); + if (!string_is_affirmative (p->value())) { continue; } + + if ((p = (*i)->property (X_("in"))) == 0) { + continue; + } - p = (*i)->property (X_("in")); - assert (p); boost::shared_ptr<Region> in = region_by_id (PBD::ID (p->value ())); + if (!in) { warning << string_compose (_("Legacy crossfade involved an incoming region not present in playlist \"%1\" - crossfade discarded"), name()) << endmsg; continue; } + boost::shared_ptr<AudioRegion> in_a = boost::dynamic_pointer_cast<AudioRegion> (in); assert (in_a); + + const XMLNodeList c = (*i)->children (); - p = (*i)->property (X_("out")); - assert (p); - boost::shared_ptr<Region> out = region_by_id (PBD::ID (p->value ())); - if (!in) { - warning << string_compose (_("Legacy crossfade involved an outgoing region not present in playlist \"%1\" - crossfade discarded"), - name()) - << endmsg; - continue; - } - boost::shared_ptr<AudioRegion> out_a = boost::dynamic_pointer_cast<AudioRegion> (out); - assert (out_a); - - XMLNodeList c = (*i)->children (); for (XMLNodeConstIterator j = c.begin(); j != c.end(); ++j) { if ((*j)->name() == X_("FadeIn")) { in_a->fade_in()->set_state (**j, version); - in_a->set_fade_in_active (true); - in_a->set_fade_in_is_xfade (true); } else if ((*j)->name() == X_("FadeOut")) { - out_a->fade_out()->set_state (**j, version); - out_a->set_fade_out_active (true); - out_a->set_fade_out_is_xfade (true); + in_a->inverse_fade_in()->set_state (**j, version); } } + + if ((p = (*i)->property ("follow-overlap")) != 0) { + in_a->set_fade_in_is_short (!string_is_affirmative (p->value())); + } else { + in_a->set_fade_in_is_short (false); + } + + in_a->set_fade_in_is_xfade (true); + in_a->set_fade_in_active (true); + cerr << in_a->name() << " from playlist fade in = xfade false\n"; } } |