diff options
author | Robin Gareus <robin@gareus.org> | 2020-02-18 01:26:20 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-02-18 01:26:20 +0100 |
commit | 6f205f857b6ace7a63e77384f058eac191bb0de9 (patch) | |
tree | 00dea7059595e2d25282d7e606381af150e91e0e /libs/ardour/session.cc | |
parent | 2ac90f55984d5011904f1bafe212e91b0a9fd83c (diff) |
Replace missing .mid files with silence
This fixes a crash: missing playlist due to missing .mid,
and retains regions for missing MIDI files.
As opposed to missing Audio, we cannot use a SilentFileSource,
because MIDI files are destructive.
This also adds an API to query missing files that have been replaced
with silence to report them to the user.
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index de68cd9830..cfc7f9b278 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -103,6 +103,7 @@ #include "ardour/route_graph.h" #include "ardour/route_group.h" #include "ardour/rt_tasklist.h" +#include "ardour/silentfilesource.h" #include "ardour/send.h" #include "ardour/selection.h" #include "ardour/session.h" @@ -6338,6 +6339,22 @@ Session::unknown_processors () const return p; } +list<string> +Session::missing_filesources (DataType dt) const +{ + list<string> p; + for (SourceMap::const_iterator i = sources.begin(); i != sources.end(); ++i) { + if (dt == DataType::AUDIO && 0 != boost::dynamic_pointer_cast<SilentFileSource> (i->second)) { + p.push_back (i->second->name()); + } + else if (dt == DataType::MIDI && 0 != boost::dynamic_pointer_cast<SMFSource> (i->second) && (i->second->flags() & Source::Missing) != 0) { + p.push_back (i->second->name()); + } + } + p.sort (); + return p; +} + void Session::initialize_latencies () { |