reorder call to ::track_transport_master() so that delta is computed correctly
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 26 Feb 2019 16:02:18 +0000 (09:02 -0700)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 26 Feb 2019 16:02:42 +0000 (09:02 -0700)
libs/ardour/session_process.cc

index 81e6d12d7f5dc30c02025f704fe4b1442a80cc32..bfd6c44291223b8db7886aa2c9aa72dc85bfb5e5 100644 (file)
@@ -1077,12 +1077,15 @@ Session::follow_transport_master (pframes_t nframes)
 
        slave_speed = tmm.get_current_speed_in_process_context();
        slave_transport_sample = tmm.get_current_position_in_process_context ();
+
+       track_transport_master (slave_speed, slave_transport_sample);
+
+       /* transport sample may have been moved during ::track_transport_master() */
+
        delta = _transport_sample - slave_transport_sample;
 
        DEBUG_TRACE (DEBUG::Slave, string_compose ("session at %1, master at %2, delta: %3 res: %4\n", _transport_sample, slave_transport_sample, delta, tmm.current()->resolution()));
 
-       track_transport_master (slave_speed, slave_transport_sample);
-
        if (transport_master_tracking_state == Running) {
 
                if (!actively_recording() && abs (delta) > tmm.current()->resolution()) {