mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-20 05:36:31 +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);
|
MidiSource::mark_midi_streaming_write_completed (lm, stuck_notes_option, when);
|
||||||
|
|
||||||
if (!writable()) {
|
if (!writable()) {
|
||||||
|
cerr << "not writable\n";
|
||||||
warning << string_compose ("attempt to write to unwritable SMF file %1", _path) << endmsg;
|
warning << string_compose ("attempt to write to unwritable SMF file %1", _path) << endmsg;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -556,7 +557,11 @@ SMFSource::mark_midi_streaming_write_completed (const Lock& lm, Evoral::Sequence
|
||||||
_model->set_edited(false);
|
_model->set_edited(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
Evoral::SMF::end_write (_path);
|
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 */
|
/* 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) {
|
} else if (type == DataType::MIDI) {
|
||||||
|
try {
|
||||||
boost::shared_ptr<SMFSource> src (new SMFSource (s, node));
|
boost::shared_ptr<SMFSource> src (new SMFSource (s, node));
|
||||||
Source::Lock lock(src->mutex());
|
Source::Lock lock(src->mutex());
|
||||||
src->load_model (lock, true);
|
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 ();
|
src->check_for_analysis_data_on_disk ();
|
||||||
SourceCreated (src);
|
SourceCreated (src);
|
||||||
return src;
|
return src;
|
||||||
|
} catch (...) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return boost::shared_ptr<Source>();
|
return boost::shared_ptr<Source>();
|
||||||
|
|
@ -289,6 +292,7 @@ SourceFactory::createExternal (DataType type, Session& s, const string& path,
|
||||||
|
|
||||||
} else if (type == DataType::MIDI) {
|
} else if (type == DataType::MIDI) {
|
||||||
|
|
||||||
|
try {
|
||||||
boost::shared_ptr<SMFSource> src (new SMFSource (s, path));
|
boost::shared_ptr<SMFSource> src (new SMFSource (s, path));
|
||||||
Source::Lock lock(src->mutex());
|
Source::Lock lock(src->mutex());
|
||||||
src->load_model (lock, true);
|
src->load_model (lock, true);
|
||||||
|
|
@ -301,6 +305,8 @@ SourceFactory::createExternal (DataType type, Session& s, const string& path,
|
||||||
}
|
}
|
||||||
|
|
||||||
return src;
|
return src;
|
||||||
|
} catch (...) {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -339,7 +345,9 @@ SourceFactory::createWritable (DataType type, Session& s, const std::string& pat
|
||||||
|
|
||||||
} else if (type == DataType::MIDI) {
|
} else if (type == DataType::MIDI) {
|
||||||
// XXX writable flags should belong to MidiSource too
|
// XXX writable flags should belong to MidiSource too
|
||||||
|
try {
|
||||||
boost::shared_ptr<SMFSource> src (new SMFSource (s, path, SndFileSource::default_writable_flags));
|
boost::shared_ptr<SMFSource> src (new SMFSource (s, path, SndFileSource::default_writable_flags));
|
||||||
|
|
||||||
assert (src->writable ());
|
assert (src->writable ());
|
||||||
|
|
||||||
Source::Lock lock(src->mutex());
|
Source::Lock lock(src->mutex());
|
||||||
|
|
@ -353,8 +361,11 @@ SourceFactory::createWritable (DataType type, Session& s, const std::string& pat
|
||||||
if (announce) {
|
if (announce) {
|
||||||
SourceCreated (src);
|
SourceCreated (src);
|
||||||
}
|
}
|
||||||
|
|
||||||
return src;
|
return src;
|
||||||
|
|
||||||
|
} catch (...) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return boost::shared_ptr<Source> ();
|
return boost::shared_ptr<Source> ();
|
||||||
|
|
@ -455,4 +466,3 @@ SourceFactory::createFromPlaylist (DataType type, Session& s, boost::shared_ptr<
|
||||||
|
|
||||||
return boost::shared_ptr<Source>();
|
return boost::shared_ptr<Source>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue