fix crash when copy'ing latent plugins
[ardour.git] / libs / ardour / playlist_source.cc
index 4c01831b02380012c077a8c3203c202687879d02..07f72331bb8f136798760b0a744d07e7ed3c10ea 100644 (file)
 #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"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace ARDOUR;
@@ -86,7 +83,7 @@ PlaylistSource::add_state (XMLNode& node)
        node.add_property ("offset", buf);
        snprintf (buf, sizeof (buf), "%" PRIu64, _playlist_length);
        node.add_property ("length", buf);
-       node.add_property ("original", _id.to_s());
+       node.add_property ("original", id().to_s());
 
        node.add_child_nocopy (_playlist->get_state());
 }
@@ -96,7 +93,7 @@ PlaylistSource::set_state (const XMLNode& node, int /*version*/)
 {
        /* check that we have a playlist ID */
 
-       const XMLProperty *prop = node.property (X_("playlist"));
+       XMLProperty const * prop = node.property (X_("playlist"));
 
        if (!prop) {
                error << _("No playlist ID in PlaylistSource XML!") << endmsg;
@@ -141,11 +138,15 @@ PlaylistSource::set_state (const XMLNode& node, int /*version*/)
 
        sscanf (prop->value().c_str(), "%" PRIu64, &_playlist_length);
 
+       /* XXX not quite sure why we set our ID back to the "original" one
+          here. october 2011, paul
+       */
+
        if ((prop = node.property (X_("original"))) == 0) {
                throw failed_constructor ();
        }
 
-       _id = prop->value();
+       set_id (prop->value());
 
        _level = _playlist->max_source_level () + 1;