From b660bc8ae92d19aedf0165815432b77a0c6170c4 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 10 Jun 2014 10:07:04 -0400 Subject: fix crash recovery: add new constructors to SndFileSource, AudioFileSource, add a new SourceFactory method and finally tweak AudioDiskstream::use_pending_capture_data() to create both the required whole-file and the in-playlist regions --- libs/ardour/audiofilesource.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libs/ardour/audiofilesource.cc') diff --git a/libs/ardour/audiofilesource.cc b/libs/ardour/audiofilesource.cc index 37bf502177..8c3bf00176 100644 --- a/libs/ardour/audiofilesource.cc +++ b/libs/ardour/audiofilesource.cc @@ -115,6 +115,22 @@ AudioFileSource::AudioFileSource (Session& s, const string& path, const string& } } +/** Constructor used for existing internal-to-session files during crash + * recovery. File must exist + */ +AudioFileSource::AudioFileSource (Session& s, const string& path, Source::Flag flags, bool /* ignored-exists-for-prototype differentiation */) + : Source (s, DataType::AUDIO, path, flags) + , AudioSource (s, path) + , FileSource (s, DataType::AUDIO, path, string(), flags) +{ + /* note that origin remains empty */ + + if (init (_path, true)) { + throw failed_constructor (); + } +} + + /** Constructor used for existing internal-to-session files via XML. File must exist. */ AudioFileSource::AudioFileSource (Session& s, const XMLNode& node, bool must_exist) : Source (s, node) -- cgit v1.2.3