summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-02-18 01:26:20 +0100
committerRobin Gareus <robin@gareus.org>2020-02-18 01:26:20 +0100
commit6f205f857b6ace7a63e77384f058eac191bb0de9 (patch)
tree00dea7059595e2d25282d7e606381af150e91e0e /libs/ardour/session.cc
parent2ac90f55984d5011904f1bafe212e91b0a9fd83c (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.cc17
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 ()
{