Fix MidiBuffer::merge_in_place and add aggressive correctness checking.
[ardour.git] / libs / ardour / playlist_factory.cc
index a801bae76c76d58a1e5e31961b7a8990c66d4579..554c36df172552be8470addb4befd06fe9c8a789 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2000-2006 Paul Davis 
+    Copyright (C) 2000-2006 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 
 */
 
-#include <pbd/error.h>
+#include "pbd/error.h"
+#include "pbd/xml++.h"
 
-#include <ardour/playlist.h>
-#include <ardour/audioplaylist.h>
-#include <ardour/midi_playlist.h>
-#include <ardour/playlist_factory.h>
+#include "ardour/playlist.h"
+#include "ardour/audioplaylist.h"
+#include "ardour/midi_playlist.h"
+#include "ardour/playlist_factory.h"
 
 #include "i18n.h"
 
+using namespace std;
 using namespace ARDOUR;
 using namespace PBD;
 
-sigc::signal<void,boost::shared_ptr<Playlist> > PlaylistFactory::PlaylistCreated;
+sigc::signal<void,boost::shared_ptr<Playlist>, bool> PlaylistFactory::PlaylistCreated;
 
-boost::shared_ptr<Playlist> 
-PlaylistFactory::create (Session& s, const XMLNode& node, bool hidden
+boost::shared_ptr<Playlist>
+PlaylistFactory::create (Session& s, const XMLNode& node, bool hidden, bool unused)
 {
        const XMLProperty* type = node.property("type");
 
@@ -46,13 +48,13 @@ PlaylistFactory::create (Session& s, const XMLNode& node, bool hidden)
        pl->set_region_ownership ();
 
        if (pl && !hidden) {
-               PlaylistCreated (pl);
+               PlaylistCreated (pl, unused);
        }
        return pl;
 }
 
-boost::shared_ptr<Playlist> 
-PlaylistFactory::create (DataType type, Session& s, string name, bool hidden) 
+boost::shared_ptr<Playlist>
+PlaylistFactory::create (DataType type, Session& s, string name, bool hidden)
 {
        boost::shared_ptr<Playlist> pl;
 
@@ -62,14 +64,14 @@ PlaylistFactory::create (DataType type, Session& s, string name, bool hidden)
                pl = boost::shared_ptr<Playlist> (new MidiPlaylist (s, name, hidden));
 
        if (pl && !hidden) {
-               PlaylistCreated (pl);
+               PlaylistCreated (pl, false);
        }
 
        return pl;
 }
 
-boost::shared_ptr<Playlist> 
-PlaylistFactory::create (boost::shared_ptr<const Playlist> old, string name, bool hidden) 
+boost::shared_ptr<Playlist>
+PlaylistFactory::create (boost::shared_ptr<const Playlist> old, string name, bool hidden)
 {
        boost::shared_ptr<Playlist> pl;
        boost::shared_ptr<const AudioPlaylist> apl;
@@ -84,19 +86,19 @@ PlaylistFactory::create (boost::shared_ptr<const Playlist> old, string name, boo
        }
 
        if (pl && !hidden) {
-               PlaylistCreated (pl);
+               PlaylistCreated (pl, false);
        }
 
        return pl;
 }
 
-boost::shared_ptr<Playlist> 
-PlaylistFactory::create (boost::shared_ptr<const Playlist> old, nframes_t start, nframes_t cnt, string name, bool hidden) 
+boost::shared_ptr<Playlist>
+PlaylistFactory::create (boost::shared_ptr<const Playlist> old, nframes_t start, nframes_t cnt, string name, bool hidden)
 {
        boost::shared_ptr<Playlist> pl;
        boost::shared_ptr<const AudioPlaylist> apl;
        boost::shared_ptr<const MidiPlaylist> mpl;
-       
+
        if ((apl = boost::dynamic_pointer_cast<const AudioPlaylist> (old)) != 0) {
                pl = boost::shared_ptr<Playlist> (new AudioPlaylist (apl, start, cnt, name, hidden));
                pl->set_region_ownership ();