second half of "bomb out if playlist construction from XML fails"
git-svn-id: svn://localhost/ardour2/branches/3.0@9759 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
2801e91fe2
commit
9687e8a667
@ -109,7 +109,9 @@ AudioPlaylist::AudioPlaylist (Session& session, const XMLNode& node, bool hidden
|
||||
add_property (_crossfades);
|
||||
|
||||
in_set_state++;
|
||||
set_state (node, Stateful::loading_state_version);
|
||||
if (set_state (node, Stateful::loading_state_version)) {
|
||||
throw failed_constructor();
|
||||
}
|
||||
in_set_state--;
|
||||
}
|
||||
|
||||
@ -728,7 +730,9 @@ AudioPlaylist::set_state (const XMLNode& node, int version)
|
||||
|
||||
in_set_state++;
|
||||
|
||||
Playlist::set_state (node, version);
|
||||
if (Playlist::set_state (node, version)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
freeze ();
|
||||
|
||||
|
@ -72,6 +72,8 @@ AudioPlaylistSource::AudioPlaylistSource (Session& s, const XMLNode& node)
|
||||
if (set_state (node, Stateful::loading_state_version, false)) {
|
||||
throw failed_constructor ();
|
||||
}
|
||||
|
||||
AudioSource::_length = _playlist_length;
|
||||
}
|
||||
|
||||
AudioPlaylistSource::~AudioPlaylistSource ()
|
||||
@ -113,6 +115,9 @@ AudioPlaylistSource::set_state (const XMLNode& node, int version, bool with_desc
|
||||
|
||||
const XMLProperty* prop;
|
||||
pair<framepos_t,framepos_t> extent = _playlist->get_extent();
|
||||
|
||||
cerr << "APS " << id() << " playlist ID " << _playlist->id() << " has " << _playlist->n_regions() << " playlist extents = " << extent.first << " .. " << extent.second << endl;
|
||||
|
||||
AudioSource::_length = extent.second - extent.first;
|
||||
|
||||
if ((prop = node.property (X_("channel"))) == 0) {
|
||||
|
@ -669,8 +669,7 @@ AudioSource::build_peaks_from_scratch ()
|
||||
|
||||
framecnt_t frames_to_read = min (bufsize, cnt);
|
||||
framecnt_t frames_read;
|
||||
|
||||
|
||||
|
||||
if ((frames_read = read_unlocked (buf, current_frame, frames_to_read)) != frames_to_read) {
|
||||
error << string_compose(_("%1: could not write read raw data for peak computation (%2)"), _name, strerror (errno)) << endmsg;
|
||||
done_with_peakfile_writes (false);
|
||||
|
@ -52,7 +52,9 @@ MidiPlaylist::MidiPlaylist (Session& session, const XMLNode& node, bool hidden)
|
||||
#endif
|
||||
|
||||
in_set_state++;
|
||||
set_state (node, Stateful::loading_state_version);
|
||||
if (set_state (node, Stateful::loading_state_version)) {
|
||||
throw failed_constructor ();
|
||||
}
|
||||
in_set_state--;
|
||||
}
|
||||
|
||||
@ -326,7 +328,9 @@ MidiPlaylist::set_state (const XMLNode& node, int version)
|
||||
in_set_state++;
|
||||
freeze ();
|
||||
|
||||
Playlist::set_state (node, version);
|
||||
if (Playlist::set_state (node, version)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
thaw();
|
||||
in_set_state--;
|
||||
|
@ -40,18 +40,23 @@ PlaylistFactory::create (Session& s, const XMLNode& node, bool hidden, bool unus
|
||||
|
||||
boost::shared_ptr<Playlist> pl;
|
||||
|
||||
if (!type || type->value() == "audio") {
|
||||
pl = boost::shared_ptr<Playlist> (new AudioPlaylist (s, node, hidden));
|
||||
} else if (type->value() == "midi") {
|
||||
pl = boost::shared_ptr<Playlist> (new MidiPlaylist (s, node, hidden));
|
||||
}
|
||||
try {
|
||||
if (!type || type->value() == "audio") {
|
||||
pl = boost::shared_ptr<Playlist> (new AudioPlaylist (s, node, hidden));
|
||||
} else if (type->value() == "midi") {
|
||||
pl = boost::shared_ptr<Playlist> (new MidiPlaylist (s, node, hidden));
|
||||
}
|
||||
|
||||
pl->set_region_ownership ();
|
||||
|
||||
if (pl && !hidden) {
|
||||
PlaylistCreated (pl, unused);
|
||||
}
|
||||
return pl;
|
||||
|
||||
pl->set_region_ownership ();
|
||||
|
||||
if (pl && !hidden) {
|
||||
PlaylistCreated (pl, unused);
|
||||
} catch (...) {
|
||||
return boost::shared_ptr<Playlist> ();
|
||||
}
|
||||
return pl;
|
||||
}
|
||||
|
||||
boost::shared_ptr<Playlist>
|
||||
@ -59,16 +64,20 @@ PlaylistFactory::create (DataType type, Session& s, string name, bool hidden)
|
||||
{
|
||||
boost::shared_ptr<Playlist> pl;
|
||||
|
||||
if (type == DataType::AUDIO)
|
||||
pl = boost::shared_ptr<Playlist> (new AudioPlaylist (s, name, hidden));
|
||||
else if (type == DataType::MIDI)
|
||||
pl = boost::shared_ptr<Playlist> (new MidiPlaylist (s, name, hidden));
|
||||
|
||||
if (pl && !hidden) {
|
||||
PlaylistCreated (pl, false);
|
||||
try {
|
||||
if (type == DataType::AUDIO)
|
||||
pl = boost::shared_ptr<Playlist> (new AudioPlaylist (s, name, hidden));
|
||||
else if (type == DataType::MIDI)
|
||||
pl = boost::shared_ptr<Playlist> (new MidiPlaylist (s, name, hidden));
|
||||
|
||||
if (pl && !hidden) {
|
||||
PlaylistCreated (pl, false);
|
||||
}
|
||||
|
||||
return pl;
|
||||
} catch (...) {
|
||||
return boost::shared_ptr<Playlist> ();
|
||||
}
|
||||
|
||||
return pl;
|
||||
}
|
||||
|
||||
boost::shared_ptr<Playlist>
|
||||
@ -77,20 +86,26 @@ PlaylistFactory::create (boost::shared_ptr<const Playlist> old, string name, boo
|
||||
boost::shared_ptr<Playlist> pl;
|
||||
boost::shared_ptr<const AudioPlaylist> apl;
|
||||
boost::shared_ptr<const MidiPlaylist> mpl;
|
||||
|
||||
try {
|
||||
|
||||
if ((apl = boost::dynamic_pointer_cast<const AudioPlaylist> (old)) != 0) {
|
||||
pl = boost::shared_ptr<Playlist> (new AudioPlaylist (apl, name, hidden));
|
||||
pl->set_region_ownership ();
|
||||
} else if ((mpl = boost::dynamic_pointer_cast<const MidiPlaylist> (old)) != 0) {
|
||||
pl = boost::shared_ptr<Playlist> (new MidiPlaylist (mpl, name, hidden));
|
||||
pl->set_region_ownership ();
|
||||
if ((apl = boost::dynamic_pointer_cast<const AudioPlaylist> (old)) != 0) {
|
||||
pl = boost::shared_ptr<Playlist> (new AudioPlaylist (apl, name, hidden));
|
||||
pl->set_region_ownership ();
|
||||
} else if ((mpl = boost::dynamic_pointer_cast<const MidiPlaylist> (old)) != 0) {
|
||||
pl = boost::shared_ptr<Playlist> (new MidiPlaylist (mpl, name, hidden));
|
||||
pl->set_region_ownership ();
|
||||
}
|
||||
|
||||
if (pl && !hidden) {
|
||||
PlaylistCreated (pl, false);
|
||||
}
|
||||
|
||||
return pl;
|
||||
} catch (...) {
|
||||
return boost::shared_ptr<Playlist> ();
|
||||
}
|
||||
|
||||
if (pl && !hidden) {
|
||||
PlaylistCreated (pl, false);
|
||||
}
|
||||
|
||||
return pl;
|
||||
|
||||
}
|
||||
|
||||
boost::shared_ptr<Playlist>
|
||||
@ -100,15 +115,19 @@ PlaylistFactory::create (boost::shared_ptr<const Playlist> old, framepos_t start
|
||||
boost::shared_ptr<const AudioPlaylist> apl;
|
||||
boost::shared_ptr<const MidiPlaylist> mpl;
|
||||
|
||||
if ((apl = boost::dynamic_pointer_cast<const AudioPlaylist> (old)) != 0) {
|
||||
pl = boost::shared_ptr<Playlist> (new AudioPlaylist (apl, start, cnt, name, hidden));
|
||||
pl->set_region_ownership ();
|
||||
} else if ((mpl = boost::dynamic_pointer_cast<const MidiPlaylist> (old)) != 0) {
|
||||
pl = boost::shared_ptr<Playlist> (new MidiPlaylist (mpl, start, cnt, name, hidden));
|
||||
pl->set_region_ownership ();
|
||||
try {
|
||||
if ((apl = boost::dynamic_pointer_cast<const AudioPlaylist> (old)) != 0) {
|
||||
pl = boost::shared_ptr<Playlist> (new AudioPlaylist (apl, start, cnt, name, hidden));
|
||||
pl->set_region_ownership ();
|
||||
} else if ((mpl = boost::dynamic_pointer_cast<const MidiPlaylist> (old)) != 0) {
|
||||
pl = boost::shared_ptr<Playlist> (new MidiPlaylist (mpl, start, cnt, name, hidden));
|
||||
pl->set_region_ownership ();
|
||||
}
|
||||
|
||||
/* this factory method does NOT notify others */
|
||||
|
||||
return pl;
|
||||
} catch (...) {
|
||||
return boost::shared_ptr<Playlist> ();
|
||||
}
|
||||
|
||||
/* this factory method does NOT notify others */
|
||||
|
||||
return pl;
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ PlaylistSource::set_state (const XMLNode& node, int version)
|
||||
}
|
||||
|
||||
if (!_playlist) {
|
||||
error << _("No playlist node in PlaylistSource XML!") << endmsg;
|
||||
error << _("Could not construct playlist for PlaylistSource from session data!") << endmsg;
|
||||
throw failed_constructor ();
|
||||
}
|
||||
|
||||
|
@ -296,9 +296,9 @@ SMFSource::append_event_unlocked_beats (const Evoral::Event<double>& ev)
|
||||
return;
|
||||
}
|
||||
|
||||
/* printf("SMFSource: %s - append_event_unlocked_beats ID = %d time = %lf, size = %u, data = ",
|
||||
/*printf("SMFSource: %s - append_event_unlocked_beats ID = %d time = %lf, size = %u, data = ",
|
||||
name().c_str(), ev.id(), ev.time(), ev.size());
|
||||
for (size_t i = 0; i < ev.size(); ++i) printf("%X ", ev.buffer()[i]); printf("\n");*/
|
||||
for (size_t i = 0; i < ev.size(); ++i) printf("%X ", ev.buffer()[i]); printf("\n");*/
|
||||
|
||||
assert(ev.time() >= 0);
|
||||
if (ev.time() < _last_ev_time_beats) {
|
||||
|
Loading…
Reference in New Issue
Block a user