diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-07-16 14:48:07 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-07-16 14:48:07 +0000 |
commit | 539b94490f7ab660f24b3de80df5514f61d481b0 (patch) | |
tree | 76658aecc60eb87dedb686e81ed8c3a69a827021 /libs/ardour | |
parent | f97da74cf7d3c2d3ae580473fa4639b0b259bf5b (diff) |
do NOT mark imported MIDI files as un-writable - all MIDI files are subject to rewriting at any time
git-svn-id: svn://localhost/ardour2/branches/3.0@13046 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/file_source.h | 3 | ||||
-rw-r--r-- | libs/ardour/file_source.cc | 9 | ||||
-rw-r--r-- | libs/ardour/import.cc | 10 |
3 files changed, 20 insertions, 2 deletions
diff --git a/libs/ardour/ardour/file_source.h b/libs/ardour/ardour/file_source.h index 291b3a3d76..5898d04f0a 100644 --- a/libs/ardour/ardour/file_source.h +++ b/libs/ardour/ardour/file_source.h @@ -52,7 +52,8 @@ public: int move_to_trash (const std::string& trash_dir_name); void mark_take (const std::string& id); - void mark_immutable (); + void mark_immutable (); + void mark_immutable_except_write(); void mark_nonremovable (); const std::string& take_id () const { return _take_id; } diff --git a/libs/ardour/file_source.cc b/libs/ardour/file_source.cc index 2f7ad2caa8..3017615948 100644 --- a/libs/ardour/file_source.cc +++ b/libs/ardour/file_source.cc @@ -555,6 +555,15 @@ FileSource::mark_immutable () } void +FileSource::mark_immutable_except_write () +{ + /* destructive sources stay writable, and their other flags don't change. */ + if (!(_flags & Destructive)) { + _flags = Flag (_flags & ~(Removable|RemovableIfEmpty|RemoveAtDestroy|CanRename)); + } +} + +void FileSource::mark_nonremovable () { _flags = Flag (_flags & ~(Removable|RemovableIfEmpty|RemoveAtDestroy)); diff --git a/libs/ardour/import.cc b/libs/ardour/import.cc index b47b99571b..433160fc20 100644 --- a/libs/ardour/import.cc +++ b/libs/ardour/import.cc @@ -582,7 +582,15 @@ Session::import_files (ImportStatus& status) boost::shared_ptr<FileSource> fs = boost::dynamic_pointer_cast<FileSource>(*x); if (fs) { - fs->mark_immutable (); + /* Only audio files should be marked as + immutable - we may need to rewrite MIDI + files at any time. + */ + if (boost::dynamic_pointer_cast<AudioFileSource> (fs)) { + fs->mark_immutable (); + } else { + fs->mark_immutable_except_write (); + } fs->mark_nonremovable (); } |