From 7e4728027c7b0a4ee6b4072a0088ea7a17d99cc4 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 24 Feb 2020 20:06:43 -0700 Subject: [PATCH] fix thinko when handling set_speed (0.0) Code only handled a reversing->rolling path, not reversing->stopped --- libs/ardour/transport_fsm.cc | 17 +++++++++++------ 1 file 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.) { - api->set_transport_speed (last_speed_request.speed, last_speed_request.abort_capture, last_speed_request.clear_state, last_speed_request.as_default); + transition (Rolling); - if (most_recently_requested_speed != 0.0) { - roll_after_locate (); + 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 (); + } + } else { + transition (Stopped); } } else {