Modified version of Hans' patch for mantis 1985. Also remove unused port_connections...
[ardour.git] / libs / ardour / session_command.cc
index bedbe7211ff62c11a89d3ae16cf1959f1fb3a3fd..4af18fcd12948c4b8274493813de07226fb5ff7b 100644 (file)
 
 */
 
-#include <ardour/session.h>
-#include <ardour/route.h>
-#include <pbd/memento_command.h>
-#include <ardour/diskstream.h>
-#include <ardour/playlist.h>
-#include <ardour/audioplaylist.h>
-#include <ardour/audio_track.h>
-#include <ardour/midi_playlist.h>
-#include <ardour/midi_track.h>
-#include <ardour/tempo.h>
-#include <ardour/audiosource.h>
-#include <ardour/audioregion.h>
-#include <ardour/midi_source.h>
-#include <ardour/midi_region.h>
-#include <pbd/error.h>
-#include <pbd/id.h>
-#include <pbd/statefuldestructible.h>
-#include <pbd/failed_constructor.h>
-#include <evoral/Curve.hpp>
+#include "ardour/session.h"
+#include "ardour/route.h"
+#include "pbd/memento_command.h"
+#include "ardour/diskstream.h"
+#include "ardour/playlist.h"
+#include "ardour/audioplaylist.h"
+#include "ardour/audio_track.h"
+#include "ardour/midi_playlist.h"
+#include "ardour/midi_track.h"
+#include "ardour/tempo.h"
+#include "ardour/audiosource.h"
+#include "ardour/audioregion.h"
+#include "ardour/midi_source.h"
+#include "ardour/midi_region.h"
+#include "pbd/error.h"
+#include "pbd/id.h"
+#include "pbd/statefuldestructible.h"
+#include "pbd/failed_constructor.h"
+#include "evoral/Curve.hpp"
 
 using namespace PBD;
 using namespace ARDOUR;
@@ -103,7 +103,11 @@ Session::memento_command_factory(XMLNode *n)
                    return new MementoCommand<Playlist>(*(pl.get()), before, after);
            }
     } else if (obj_T == typeid (Route).name() || obj_T == typeid (AudioTrack).name() || obj_T == typeid(MidiTrack).name()) { 
-           return new MementoCommand<Route>(*route_by_id(id), before, after);
+               if (boost::shared_ptr<Route> r = route_by_id(id)) {
+                       return new MementoCommand<Route>(*r, before, after);
+               } else {
+                       error << string_compose (X_("Route %1 not found in session"), id) << endmsg;
+               }
     } else if (obj_T == typeid (Evoral::Curve).name() || obj_T == typeid (AutomationList).name()) {
                std::map<PBD::ID, AutomationList*>::iterator i = automation_lists.find(id);
                if (i != automation_lists.end()) {