From 276baee8ad4931b62613aa38f214ade45072ecf5 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Sun, 23 Feb 2020 08:40:10 -0600 Subject: surfaces transport hotfix: BasicUI: prefer actual_speed() and transport_stopped_or_stopping() for current Transport FSM --- libs/surfaces/control_protocol/basic_ui.cc | 24 ++++++++++++++-------- .../control_protocol/control_protocol/basic_ui.h | 4 +++- 2 files changed, 18 insertions(+), 10 deletions(-) (limited to 'libs/surfaces') diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc index 73f0792826..a02879902f 100644 --- a/libs/surfaces/control_protocol/basic_ui.cc +++ b/libs/surfaces/control_protocol/basic_ui.cc @@ -188,13 +188,13 @@ BasicUI::remove_marker_at_playhead () void BasicUI::rewind () { - session->request_transport_speed (session->actual_speed() - 1.5); + session->request_transport_speed (get_transport_speed() - 1.5); } void BasicUI::ffwd () { - session->request_transport_speed (session->transport_speed() + 1.5); + session->request_transport_speed (get_transport_speed() + 1.5); } void @@ -212,19 +212,19 @@ BasicUI::stop_button_onoff () const bool BasicUI::play_button_onoff () const { - return session->actual_speed() == 1.0; + return get_transport_speed() == 1.0; } bool BasicUI::ffwd_button_onoff () const { - return session->actual_speed() > 1.0; + return get_transport_speed() > 1.0; } bool BasicUI::rewind_button_onoff () const { - return session->actual_speed() < 0.0; + return get_transport_speed() < 0.0; } bool @@ -258,7 +258,7 @@ BasicUI::transport_play (bool from_last_start) } #endif - bool rolling = session->transport_rolling(); + bool rolling = transport_rolling(); if (session->get_play_loop()) { @@ -355,9 +355,15 @@ BasicUI::set_transport_speed (double speed) } double -BasicUI::get_transport_speed () +BasicUI::get_transport_speed () const { - return session->transport_speed (); + return session->actual_speed (); +} + +double +BasicUI::transport_rolling () const +{ + return !session->transport_stopped_or_stopping (); } void @@ -548,7 +554,7 @@ BasicUI::toggle_roll (bool roll_out_of_bounded_mode) } } - bool rolling = session->transport_rolling(); + bool rolling = transport_rolling(); if (rolling) { diff --git a/libs/surfaces/control_protocol/control_protocol/basic_ui.h b/libs/surfaces/control_protocol/control_protocol/basic_ui.h index 7d5904544f..3595f20c5a 100644 --- a/libs/surfaces/control_protocol/control_protocol/basic_ui.h +++ b/libs/surfaces/control_protocol/control_protocol/basic_ui.h @@ -68,7 +68,9 @@ class LIBCONTROLCP_API BasicUI { void transport_stop (); void transport_play (bool jump_back = false); void set_transport_speed (double speed); - double get_transport_speed (); + + double get_transport_speed () const; + double transport_rolling () const; void jump_by_seconds (double sec, ARDOUR::LocateTransportDisposition ltd = ARDOUR::RollIfAppropriate); void jump_by_bars (double bars, ARDOUR::LocateTransportDisposition ltd = ARDOUR::RollIfAppropriate); -- cgit v1.2.3