diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index 9902e5a1e3..4d18aaf73c 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -834,6 +834,16 @@ Session::process_without_events (pframes_t nframes) get_track_statistics (); + /* XXX: I'm not sure whether this is correct, but at least it + matches process_with_events, so that this new frames_moved + is -ve when transport speed is -ve. This means that the + transport position is updated correctly when we are in + reverse. It seems a bit wrong that we're not using the + interpolator to compute this. + */ + + frames_moved = (framecnt_t) floor (_transport_speed * nframes); + if (frames_moved < 0) { decrement_transport_position (-frames_moved); } else {