after cloning a MIDI region, mark the source file as non-removable. Fixes reports about missing MIDI files on the forums and IRC
This commit is contained in:
parent
3e7fad52f5
commit
fc691cb3ba
|
@ -82,6 +82,8 @@ public:
|
|||
|
||||
static PBD::Signal2<int,std::string,std::vector<std::string> > AmbiguousFileName;
|
||||
|
||||
virtual void prevent_deletion ();
|
||||
|
||||
protected:
|
||||
FileSource (Session& session, DataType type,
|
||||
const std::string& path,
|
||||
|
@ -103,7 +105,6 @@ protected:
|
|||
std::string _origin;
|
||||
bool _open;
|
||||
|
||||
void prevent_deletion ();
|
||||
};
|
||||
|
||||
} // namespace ARDOUR
|
||||
|
|
|
@ -69,6 +69,8 @@ public:
|
|||
|
||||
static bool safe_midi_file_extension (const std::string& path);
|
||||
|
||||
void prevent_deletion ();
|
||||
|
||||
protected:
|
||||
void set_path (const std::string& newpath);
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include "ardour/midi_model.h"
|
||||
#include "ardour/midi_state_tracker.h"
|
||||
#include "ardour/midi_source.h"
|
||||
#include "ardour/file_source.h"
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/session_directory.h"
|
||||
#include "ardour/source_factory.h"
|
||||
|
@ -380,6 +381,10 @@ MidiSource::clone (const string& path, Evoral::MusicalTime begin, Evoral::Musica
|
|||
} else {
|
||||
newsrc->set_model (_model);
|
||||
}
|
||||
|
||||
/* this file is not removable (but since it is MIDI, it is mutable) */
|
||||
|
||||
boost::dynamic_pointer_cast<FileSource> (newsrc)->prevent_deletion ();
|
||||
|
||||
return newsrc;
|
||||
}
|
||||
|
|
|
@ -73,9 +73,10 @@ SMFSource::SMFSource (Session& s, const string& path, Source::Flag flags)
|
|||
return;
|
||||
}
|
||||
|
||||
if (open(_path)) {
|
||||
if (open (_path)) {
|
||||
throw failed_constructor ();
|
||||
}
|
||||
|
||||
_open = true;
|
||||
}
|
||||
|
||||
|
@ -658,3 +659,12 @@ SMFSource::ensure_disk_file ()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
SMFSource::prevent_deletion ()
|
||||
{
|
||||
/* Unlike the audio case, the MIDI file remains mutable (because we can
|
||||
edit MIDI data)
|
||||
*/
|
||||
|
||||
_flags = Flag (_flags & ~(Removable|RemovableIfEmpty|RemoveAtDestroy));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user