diff options
Diffstat (limited to 'libs/ardour/audiofilesource.cc')
-rw-r--r-- | libs/ardour/audiofilesource.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/ardour/audiofilesource.cc b/libs/ardour/audiofilesource.cc index bb0b4da774..a25e19ea5a 100644 --- a/libs/ardour/audiofilesource.cc +++ b/libs/ardour/audiofilesource.cc @@ -131,7 +131,10 @@ AudioFileSource::AudioFileSource (Session& s, const string& path, Source::Flag f } -/** Constructor used for existing internal-to-session files via XML. File must exist. */ +/** Constructor used for existing files via XML. File must exist. If _origin + * is an absolute path after ::set_state(), then the file is external to the + * session. + */ AudioFileSource::AudioFileSource (Session& s, const XMLNode& node, bool must_exist) : Source (s, node) , AudioSource (s, node) @@ -141,6 +144,11 @@ AudioFileSource::AudioFileSource (Session& s, const XMLNode& node, bool must_exi throw failed_constructor (); } + if (Glib::path_is_absolute (_origin)) { + _path = _origin; + must_exist = true; + } + if (init (_path, must_exist)) { throw failed_constructor (); } |