From bfefff3588d06ac14db6cca04222628c42953064 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 30 May 2012 19:30:38 +0000 Subject: 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 --- libs/ardour/audio_playlist.cc | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'libs/ardour/audio_playlist.cc') 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 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 in_a = boost::dynamic_pointer_cast (in); assert (in_a); + + const XMLNodeList c = (*i)->children (); - p = (*i)->property (X_("out")); - assert (p); - boost::shared_ptr 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 out_a = boost::dynamic_pointer_cast (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"; } } -- cgit v1.2.3