mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 11:46:25 +01:00
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:
parent
f2699194d3
commit
3fae5f15af
1 changed files with 9 additions and 3 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue