From ec2cb3141f19e9567c174fac8b895566a755a415 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 26 Sep 2014 15:38:48 -0400 Subject: next (final?) part of handling missing MIDI files. If an external-to-session file is missing, consider it a fatal error in session loading. If an internal-to-session file is missing, just create a new MIDI source with the same path and ID, and use that instead. --- libs/ardour/session_state.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libs/ardour/session_state.cc') diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 79d8ca1c02..db1eb30d3c 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -74,6 +74,7 @@ #include "pbd/stacktrace.h" #include "pbd/convert.h" #include "pbd/clear_dir.h" +#include "pbd/strsplit.h" #include "ardour/amp.h" #include "ardour/audio_diskstream.h" @@ -1902,7 +1903,13 @@ Session::load_sources (const XMLNode& node) string fullpath; if (!Glib::path_is_absolute (err.path)) { - fullpath = Glib::build_filename (source_search_path (DataType::MIDI).front(), err.path); + vector sdirs; + split (source_search_path (DataType::MIDI), sdirs, ':'); + if (sdirs.empty()) { + fatal << _("Empty MIDI source search path!") << endmsg; + /*NOTREACHED*/ + } + fullpath = Glib::build_filename (sdirs.front(), err.path); } else { /* this should be an unrecoverable error: we would be creating a MIDI file outside the session tree. -- cgit v1.2.3