diff options
Diffstat (limited to 'libs/ardour/file_source.cc')
-rw-r--r-- | libs/ardour/file_source.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libs/ardour/file_source.cc b/libs/ardour/file_source.cc index 84d4f3043f..ae7fbdc38c 100644 --- a/libs/ardour/file_source.cc +++ b/libs/ardour/file_source.cc @@ -62,6 +62,8 @@ FileSource::FileSource (Session& session, DataType type, const string& path, con , _origin (origin) { set_within_session_from_path (path); + + prevent_deletion (); } FileSource::FileSource (Session& session, const XMLNode& node, bool /*must_exist*/) @@ -75,6 +77,23 @@ FileSource::FileSource (Session& session, const XMLNode& node, bool /*must_exist _path = _name; _within_session = true; + + prevent_deletion (); +} + +void +FileSource::prevent_deletion () +{ + /* if this file already exists, it cannot be removed, ever + */ + + if (Glib::file_test (_path, Glib::FILE_TEST_EXISTS)) { + if (!(_flags & Destructive)) { + mark_immutable (); + } else { + _flags = Flag (_flags & ~(Removable|RemovableIfEmpty|RemoveAtDestroy)); + } + } } bool |