From f94aec5a59d4b74ec0567328cdbd4d7b5ca9989f Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 19 Apr 2021 15:48:04 -0600 Subject: [PATCH] fix/improve BasicUI's methods for rewind/ffwd/play (used by various surfaces) --- libs/surfaces/control_protocol/basic_ui.cc | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc index db173cc624..6f3d5bcd91 100644 --- a/libs/surfaces/control_protocol/basic_ui.cc +++ b/libs/surfaces/control_protocol/basic_ui.cc @@ -188,14 +188,22 @@ BasicUI::remove_marker_at_playhead () void BasicUI::rewind () { - session->request_transport_speed (get_transport_speed() - 1.5, false); + if (session->transport_speed() < 0) { + session->request_transport_speed (get_transport_speed() - 1.5, false); + } else { + session->request_transport_speed (-1.5, false); + } session->request_roll (); } void BasicUI::ffwd () { - session->request_transport_speed (get_transport_speed() + 1.5, false); + if (session->transport_speed() > 0) { + session->request_transport_speed (get_transport_speed() + 1.5, false); + } else { + session->request_transport_speed (1.5, false); + } session->request_roll (); } @@ -284,7 +292,9 @@ BasicUI::transport_play (bool from_last_start) session->request_play_range (0, true); } - if (!rolling) { + if (rolling) { + session->request_transport_speed (1.0, TRS_UI); + } else { session->request_roll (); } }