summaryrefslogtreecommitdiff
path: root/libs/ardour/session_process.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2012-10-16 20:53:12 +0000
committerRobin Gareus <robin@gareus.org>2012-10-16 20:53:12 +0000
commitb40b35326488c881ac79d4df96fec00edc6845c9 (patch)
treea92f8e1627ae38f1017cda6a8c364daff5c6be5e /libs/ardour/session_process.cc
parent64b0efdf9f523bfb265325d139a4fbfa95a8ecde (diff)
prepare for non-seekahead [LTC] slave. fix state machine
locate() will call realtime_stop which will reset the slave-state. git-svn-id: svn://localhost/ardour2/branches/3.0@13290 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/session_process.cc')
-rw-r--r--libs/ardour/session_process.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc
index 273a40366d..4af6b10b89 100644
--- a/libs/ardour/session_process.cc
+++ b/libs/ardour/session_process.cc
@@ -653,7 +653,10 @@ Session::track_slave_state (float slave_speed, framepos_t slave_transport_frame,
} else {
- _slave_state = Running;
+ DEBUG_TRACE (DEBUG::Slave, string_compose ("slave stopped -> running at %1\n", slave_transport_frame));
+
+ memset (delta_accumulator, 0, sizeof (int32_t) * delta_accumulator_size);
+ average_slave_delta = 0L;
Location* al = _locations->auto_loop_location();
@@ -665,6 +668,7 @@ Session::track_slave_state (float slave_speed, framepos_t slave_transport_frame,
if (slave_transport_frame != _transport_frame) {
locate (slave_transport_frame, false, false);
}
+ _slave_state = Running;
}
break;
@@ -713,9 +717,6 @@ Session::track_slave_state (float slave_speed, framepos_t slave_transport_frame,
cerr << "cannot micro-seek\n";
/* XXX what? */
}
-
- memset (delta_accumulator, 0, sizeof (int32_t) * delta_accumulator_size);
- average_slave_delta = 0L;
}
}
@@ -738,7 +739,7 @@ Session::track_slave_state (float slave_speed, framepos_t slave_transport_frame,
force_locate (slave_transport_frame, false);
}
- _slave_state = Stopped;
+ reset_slave_state();
}
}