diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index d511897b3b..c5036301a8 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -4164,6 +4164,7 @@ Session::write_one_audio_track (AudioTrack& track, nframes_t start, nframes_t en nframes_t this_chunk; nframes_t to_do; nframes_t len = end - start; + nframes_t need_block_size_reset = false; vector buffers; if (end <= start) { @@ -4221,6 +4222,11 @@ Session::write_one_audio_track (AudioTrack& track, nframes_t start, nframes_t en srcs.push_back (fsource); } + /* tell redirects that care that we are about to use a much larger blocksize */ + + need_block_size_reset = true; + track.set_block_size (chunk_size); + /* XXX need to flush all redirects */ position = start; @@ -4312,6 +4318,10 @@ Session::write_one_audio_track (AudioTrack& track, nframes_t start, nframes_t en free (*i); } + if (need_block_size_reset) { + track.set_block_size (get_block_size()); + } + unblock_processing (); itt.done = true;