+
+ return;
+ }
+
+ if (_remaining_latency_preroll > 0) {
+ samplepos_t remain = std::min ((samplepos_t)nframes, _remaining_latency_preroll);
+
+ if (need_buffers) {
+ _engine.main_thread()->get_buffers ();
+ }
+
+ process_without_events (remain);
+
+ if (need_buffers) {
+ _engine.main_thread()->drop_buffers ();
+ }
+
+ _remaining_latency_preroll -= remain;
+ _transport_sample -= remain;
+ nframes -= remain;
+
+ if (nframes == 0) {
+ return;
+ }
+ _engine.split_cycle (remain);
+ }
+
+ if (need_buffers) {
+ _engine.main_thread()->get_buffers ();