mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-20 13:46:30 +01:00
catch various libsmf errors rethrown as exceptions
This commit is contained in:
parent
1a25672239
commit
027d0efc2d
2 changed files with 42 additions and 27 deletions
|
|
@ -548,6 +548,7 @@ SMFSource::mark_midi_streaming_write_completed (const Lock& lm, Evoral::Sequence
|
|||
MidiSource::mark_midi_streaming_write_completed (lm, stuck_notes_option, when);
|
||||
|
||||
if (!writable()) {
|
||||
cerr << "not writable\n";
|
||||
warning << string_compose ("attempt to write to unwritable SMF file %1", _path) << endmsg;
|
||||
return;
|
||||
}
|
||||
|
|
@ -556,7 +557,11 @@ SMFSource::mark_midi_streaming_write_completed (const Lock& lm, Evoral::Sequence
|
|||
_model->set_edited(false);
|
||||
}
|
||||
|
||||
try {
|
||||
Evoral::SMF::end_write (_path);
|
||||
} catch (std::exception & e) {
|
||||
error << string_compose (_("Exception while writing %1, file may be corrupt/unusable"), _path) << endmsg;
|
||||
}
|
||||
|
||||
/* data in the file now, not removable */
|
||||
|
||||
|
|
|
|||
|
|
@ -220,6 +220,7 @@ SourceFactory::create (Session& s, const XMLNode& node, bool defer_peaks)
|
|||
}
|
||||
}
|
||||
} else if (type == DataType::MIDI) {
|
||||
try {
|
||||
boost::shared_ptr<SMFSource> src (new SMFSource (s, node));
|
||||
Source::Lock lock(src->mutex());
|
||||
src->load_model (lock, true);
|
||||
|
|
@ -229,6 +230,8 @@ SourceFactory::create (Session& s, const XMLNode& node, bool defer_peaks)
|
|||
src->check_for_analysis_data_on_disk ();
|
||||
SourceCreated (src);
|
||||
return src;
|
||||
} catch (...) {
|
||||
}
|
||||
}
|
||||
|
||||
return boost::shared_ptr<Source>();
|
||||
|
|
@ -289,6 +292,7 @@ SourceFactory::createExternal (DataType type, Session& s, const string& path,
|
|||
|
||||
} else if (type == DataType::MIDI) {
|
||||
|
||||
try {
|
||||
boost::shared_ptr<SMFSource> src (new SMFSource (s, path));
|
||||
Source::Lock lock(src->mutex());
|
||||
src->load_model (lock, true);
|
||||
|
|
@ -301,6 +305,8 @@ SourceFactory::createExternal (DataType type, Session& s, const string& path,
|
|||
}
|
||||
|
||||
return src;
|
||||
} catch (...) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -339,7 +345,9 @@ SourceFactory::createWritable (DataType type, Session& s, const std::string& pat
|
|||
|
||||
} else if (type == DataType::MIDI) {
|
||||
// XXX writable flags should belong to MidiSource too
|
||||
try {
|
||||
boost::shared_ptr<SMFSource> src (new SMFSource (s, path, SndFileSource::default_writable_flags));
|
||||
|
||||
assert (src->writable ());
|
||||
|
||||
Source::Lock lock(src->mutex());
|
||||
|
|
@ -353,8 +361,11 @@ SourceFactory::createWritable (DataType type, Session& s, const std::string& pat
|
|||
if (announce) {
|
||||
SourceCreated (src);
|
||||
}
|
||||
|
||||
return src;
|
||||
|
||||
} catch (...) {
|
||||
}
|
||||
}
|
||||
|
||||
return boost::shared_ptr<Source> ();
|
||||
|
|
@ -455,4 +466,3 @@ SourceFactory::createFromPlaylist (DataType type, Session& s, boost::shared_ptr<
|
|||
|
||||
return boost::shared_ptr<Source>();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue