13
0

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.
This commit is contained in:
Paul Davis 2014-09-26 15:38:48 -04:00
parent 1e6b6df773
commit ec2cb3141f

View File

@ -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<Glib::ustring> 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.