diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-05-16 20:16:57 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-05-16 20:16:57 +0000 |
commit | 99aa8c6338e47b41143f799fdcb35d1699548076 (patch) | |
tree | a61140fd331b49a408894f00dcb8976cbb6543b8 /libs/ardour/playlist_source.cc | |
parent | 4b848856ebc2856bf7ab10a000cc88bdd3bc4a4a (diff) |
rename join regions op as combine regions; save and restore nested playlists, sources, regions; add undo/redo for combine; fixup peakfile use/discovery
git-svn-id: svn://localhost/ardour2/branches/3.0@9528 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/playlist_source.cc')
-rw-r--r-- | libs/ardour/playlist_source.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/libs/ardour/playlist_source.cc b/libs/ardour/playlist_source.cc index 7ac175959c..a1597a76d2 100644 --- a/libs/ardour/playlist_source.cc +++ b/libs/ardour/playlist_source.cc @@ -32,6 +32,7 @@ #include "ardour/playlist.h" #include "ardour/playlist_source.h" +#include "ardour/playlist_factory.h" #include "ardour/session.h" #include "ardour/session_playlists.h" #include "ardour/source_factory.h" @@ -84,26 +85,38 @@ PlaylistSource::add_state (XMLNode& node) node.add_property ("offset", buf); snprintf (buf, sizeof (buf), "%" PRIu64, _playlist_length); node.add_property ("length", buf); + + node.add_child_nocopy (_playlist->get_state()); } int PlaylistSource::set_state (const XMLNode& node, int version) { - /* get playlist ID */ + /* check that we have a playlist ID */ const XMLProperty *prop = node.property (X_("playlist")); if (!prop) { + error << _("No playlist ID in PlaylistSource XML!") << endmsg; throw failed_constructor (); } - PBD::ID id (prop->value()); + /* create playlist from child node */ + + XMLNodeList nlist; + XMLNodeConstIterator niter; - /* get playlist */ + nlist = node.children(); - boost::shared_ptr<Playlist> p = _session.playlists->by_id (id); + for (niter = nlist.begin(); niter != nlist.end(); ++niter) { + if ((*niter)->name() == "Playlist") { + _playlist = PlaylistFactory::create (_session, **niter, true, false); + break; + } + } if (!_playlist) { + error << _("No playlist node in PlaylistSource XML!") << endmsg; throw failed_constructor (); } |