fix crash initiated by never configuring track write sources when reloading a session, caused by earlier commits to avoid unnecessary write source resets

This commit is contained in:
Paul Davis 2014-07-09 12:03:22 -04:00
parent f2699194d3
commit 3fae5f15af

View file

@ -148,7 +148,7 @@ AudioDiskstream::free_working_buffers()
void
AudioDiskstream::non_realtime_input_change ()
{
bool need_new_write_sources = false;
bool need_write_sources = false;
{
Glib::Threads::Mutex::Lock lm (state_lock);
@ -157,6 +157,12 @@ AudioDiskstream::non_realtime_input_change ()
return;
}
boost::shared_ptr<ChannelList> cr = channels.reader();
if (!cr->empty() && !cr->front()->write_source) {
need_write_sources = true;
cerr << name() << " no write sources!\n";
}
if (input_change_pending.type == IOChange::ConfigurationChanged) {
RCUWriter<ChannelList> writer (channels);
boost::shared_ptr<ChannelList> c = writer.get_copy();
@ -169,7 +175,7 @@ AudioDiskstream::non_realtime_input_change ()
remove_channel_from (c, _n_channels.n_audio() - _io->n_ports().n_audio());
}
need_new_write_sources = true;
need_write_sources = true;
}
if (input_change_pending.type & IOChange::ConnectionsChanged) {
@ -183,7 +189,7 @@ AudioDiskstream::non_realtime_input_change ()
/* implicit unlock */
}
if (need_new_write_sources) {
if (need_write_sources) {
reset_write_sources (false);
}