+void
+Session::follow_slave_silently (nframes_t nframes, float slave_speed)
+{
+ if (slave_speed && _transport_speed) {
+
+ /* something isn't right, but we should move with the master
+ for now.
+ */
+
+ bool need_butler;
+
+ prepare_diskstreams ();
+ silent_process_routes (nframes);
+ commit_diskstreams (nframes, need_butler);
+
+ if (need_butler) {
+ summon_butler ();
+ }
+
+ int32_t frames_moved = (int32_t) floor (_transport_speed * nframes);
+
+ if (frames_moved < 0) {
+ decrement_transport_position (-frames_moved);
+ } else {
+ increment_transport_position (frames_moved);
+ }
+
+ nframes_t stop_limit;
+
+ if (actively_recording()) {
+ stop_limit = max_frames;
+ } else {
+ if (Config->get_stop_at_session_end()) {
+ stop_limit = current_end_frame();
+ } else {
+ stop_limit = max_frames;
+ }
+ }
+
+ maybe_stop (stop_limit);
+ }
+}
+