summaryrefslogtreecommitdiff
path: root/libs/ardour/transport_fsm.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-02-24 20:06:43 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2020-02-24 20:06:43 -0700
commit7e4728027c7b0a4ee6b4072a0088ea7a17d99cc4 (patch)
treea7115fde23dd3d49697f630f5f016b9e69c4b858 /libs/ardour/transport_fsm.cc
parent4749fcef86ac572960ea5ecd1ce502ecd5b7e846 (diff)
fix thinko when handling set_speed (0.0)
Code only handled a reversing->rolling path, not reversing->stopped
Diffstat (limited to 'libs/ardour/transport_fsm.cc')
-rw-r--r--libs/ardour/transport_fsm.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/libs/ardour/transport_fsm.cc b/libs/ardour/transport_fsm.cc
index 85f004f082..403bef07bd 100644
--- a/libs/ardour/transport_fsm.cc
+++ b/libs/ardour/transport_fsm.cc
@@ -327,18 +327,23 @@ TransportFSM::process_event (Event& ev, bool already_deferred, bool& deferred)
if (reversing()) {
- if (most_recently_requested_speed > 0) {
+ if (most_recently_requested_speed >= 0.) {
transition (Forwards);
} else {
- transition (Forwards);
+ transition (Backwards);
}
- transition (Rolling);
+ if (fabs (most_recently_requested_speed) > 0.) {
+
+ transition (Rolling);
- api->set_transport_speed (last_speed_request.speed, last_speed_request.abort_capture, last_speed_request.clear_state, last_speed_request.as_default);
+ api->set_transport_speed (last_speed_request.speed, last_speed_request.abort_capture, last_speed_request.clear_state, last_speed_request.as_default);
- if (most_recently_requested_speed != 0.0) {
- roll_after_locate ();
+ if (most_recently_requested_speed != 0.0) {
+ roll_after_locate ();
+ }
+ } else {
+ transition (Stopped);
}
} else {