- bool roll_delayed = false;
- samplecnt_t roll_delay_offset = 0;
-
- if (speed != 0.0) {
- if (_roll_delay >= disk_samples_to_consume) {
- /* still waiting for _roll_delay to end */
- _roll_delay -= disk_samples_to_consume;
- /* we could set disk_samples_to_consume to zero here, but it
- won't be used anyway.
- */
- roll_delayed = true;
-
- } else if (_roll_delay > 0) {
- /* roll delay will end during this call to ::run(), but
- * there's some silence needed in the signal-from-disk first
- */
- roll_delay_offset = _roll_delay;
- bufs.silence (_roll_delay, 0);
- disk_samples_to_consume -= _roll_delay;
- start_sample += _roll_delay;
- _roll_delay = 0;
- }
- }
-
- BufferSet& scratch_bufs (_session.get_scratch_buffers (bufs.count()));
- const bool still_locating = _session.global_locate_pending();