take read-lock when saving processor order
[ardour.git] / libs / ardour / audio_playlist_importer.cc
index 1c119e0ed7891030de3505dc37e492ffae1e087a..f24777c68d5c96395a3adf5027ed55341d70dc4e 100644 (file)
@@ -28,7 +28,6 @@
 
 #include "ardour/audio_region_importer.h"
 #include "ardour/session.h"
-#include "ardour/playlist.h"
 #include "ardour/playlist_factory.h"
 #include "ardour/session_playlists.h"
 
@@ -52,7 +51,7 @@ AudioPlaylistImportHandler::AudioPlaylistImportHandler (XMLTree const & source,
 
        XMLNodeList const & pl_children = playlists->children();
        for (XMLNodeList::const_iterator it = pl_children.begin(); it != pl_children.end(); ++it) {
-               const XMLProperty* type = (*it)->property("type");
+               XMLProperty const * type = (*it)->property("type");
                if ( !type || type->value() == "audio" ) {
                        try {
                                elements.push_back (ElementPtr ( new AudioPlaylistImporter (source, session, *this, **it)));
@@ -76,7 +75,7 @@ AudioPlaylistImportHandler::get_regions (XMLNode const & node, ElementList & lis
 }
 
 void
-AudioPlaylistImportHandler::update_region_id (XMLProperty* id_prop)
+AudioPlaylistImportHandler::update_region_id (XMLProperty * id_prop)
 {
        PBD::ID old_id (id_prop->value());
        PBD::ID new_id (region_handler.get_new_id (old_id));
@@ -178,10 +177,11 @@ AudioPlaylistImporter::_prepare_move ()
                }
                name = rename_pair.second;
        }
-       
-       XMLProperty* p = xml_playlist.property ("name");
+
+       XMLProperty * p = xml_playlist.property ("name");
        if (!p) {
                error << _("badly-formed XML in imported playlist") << endmsg;
+               return false;
        }
 
        p->set_value (name);
@@ -219,22 +219,23 @@ AudioPlaylistImporter::_move ()
        // Update region ids in crossfades
        XMLNodeList crossfades = xml_playlist.children("Crossfade");
        for (XMLNodeIterator it = crossfades.begin(); it != crossfades.end(); ++it) {
-               XMLProperty* in = (*it)->property("in");
-               XMLProperty* out = (*it)->property("out");
+               XMLProperty * in = (*it)->property("in");
+               XMLProperty * out = (*it)->property("out");
                if (!in || !out) {
                        error << string_compose (X_("AudioPlaylistImporter (%1): did not find the \"in\" or \"out\" property from a crossfade"), name) << endmsg;
+                       continue; // or fatal?
                }
 
                handler.update_region_id (in);
                handler.update_region_id (out);
 
                // rate convert length and position
-               XMLProperty* length = (*it)->property("length");
+               XMLProperty * length = (*it)->property("length");
                if (length) {
                        length->set_value (rate_convert_samples (length->value()));
                }
 
-               XMLProperty* position = (*it)->property("position");
+               XMLProperty * position = (*it)->property("position");
                if (position) {
                        position->set_value (rate_convert_samples (position->value()));
                }