rearrange transportFSM code to be more explicit about a speed-reset-after-stop
This commit is contained in:
parent
e588fe2057
commit
ad14077587
|
@ -216,6 +216,7 @@ struct TransportFSM
|
||||||
void set_roll_after (bool) const;
|
void set_roll_after (bool) const;
|
||||||
bool compute_should_roll (LocateTransportDisposition) const;
|
bool compute_should_roll (LocateTransportDisposition) const;
|
||||||
int compute_transport_speed () const;
|
int compute_transport_speed () const;
|
||||||
|
void maybe_reset_speed ();
|
||||||
};
|
};
|
||||||
|
|
||||||
} /* end namespace ARDOUR */
|
} /* end namespace ARDOUR */
|
||||||
|
|
|
@ -427,6 +427,7 @@ TransportFSM::process_event (Event& ev, bool already_deferred, bool& deferred)
|
||||||
start_locate_after_declick ();
|
start_locate_after_declick ();
|
||||||
break;
|
break;
|
||||||
case DeclickToStop:
|
case DeclickToStop:
|
||||||
|
maybe_reset_speed ();
|
||||||
transition (Stopped);
|
transition (Stopped);
|
||||||
/* transport already stopped */
|
/* transport already stopped */
|
||||||
break;
|
break;
|
||||||
|
@ -493,32 +494,31 @@ TransportFSM::stop_playback (Event const & s)
|
||||||
_last_locate.target = max_samplepos;
|
_last_locate.target = max_samplepos;
|
||||||
current_roll_after_locate_status = boost::none;
|
current_roll_after_locate_status = boost::none;
|
||||||
|
|
||||||
if (!declicking_for_locate()) {
|
api->stop_transport (s.abort_capture, s.clear_state);
|
||||||
|
}
|
||||||
|
|
||||||
if (Config->get_reset_default_speed_on_stop()) {
|
void
|
||||||
|
TransportFSM::maybe_reset_speed ()
|
||||||
|
{
|
||||||
|
if (Config->get_reset_default_speed_on_stop()) {
|
||||||
|
|
||||||
if (most_recently_requested_speed != 1.0) {
|
if (most_recently_requested_speed != 1.0) {
|
||||||
set_speed (Event (1.0, false));
|
set_speed (Event (1.0, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
/* We're not resetting back to 1.0, but we may need to handle a
|
/* We're not resetting back to 1.0, but we may need to handle a
|
||||||
* speed change from whatever we have been rolling at to
|
* speed change from whatever we have been rolling at to
|
||||||
* whatever the current default is. We could have been
|
* whatever the current default is. We could have been
|
||||||
* rewinding at -4.5 ... when we restart, we need to play at
|
* rewinding at -4.5 ... when we restart, we need to play at
|
||||||
* the current _default_transport_speed
|
* the current _default_transport_speed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (most_recently_requested_speed != _default_speed) {
|
||||||
if (most_recently_requested_speed != _default_speed) {
|
set_speed (Event (_default_speed, false));
|
||||||
set_speed (Event (_default_speed, false));
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
api->stop_transport (s.abort_capture, s.clear_state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in New Issue
Block a user