mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-28 09:27:39 +01:00
Ensure that empty drag-created MIDI regions get a file on disk so that there aren't missing file errors on reload (#4024).
git-svn-id: svn://localhost/ardour2/branches/3.0@9486 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
d901dbccc9
commit
d7c836dc07
3 changed files with 29 additions and 7 deletions
|
|
@ -578,3 +578,29 @@ SMFSource::set_path (const string& p)
|
|||
FileSource::set_path (p);
|
||||
SMF::set_path (_path);
|
||||
}
|
||||
|
||||
/** Ensure that this source has some file on disk, even if it's just a SMF header */
|
||||
void
|
||||
SMFSource::ensure_disk_file ()
|
||||
{
|
||||
if (_model) {
|
||||
/* We have a model, so write it to disk; see MidiSource::session_saved
|
||||
for an explanation of what we are doing here.
|
||||
*/
|
||||
boost::shared_ptr<MidiModel> mm = _model;
|
||||
_model.reset ();
|
||||
mm->sync_to_source ();
|
||||
_model = mm;
|
||||
} else {
|
||||
/* No model; if it's not already open, it's an empty source, so create
|
||||
and open it for writing.
|
||||
*/
|
||||
if (!_open) {
|
||||
open_for_write ();
|
||||
}
|
||||
|
||||
/* Flush, which will definitely put something on disk */
|
||||
flush_midi ();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue