libardour: provide infrastructure for requesting default play speed
This commit is contained in:
parent
8b365e238e
commit
3bdf009e11
|
@ -480,10 +480,11 @@ public:
|
|||
void allow_auto_play (bool yn);
|
||||
|
||||
double default_play_speed ();
|
||||
void set_default_play_speed (double spd, TransportRequestSource origin = TRS_UI);
|
||||
void set_default_play_speed (double spd);
|
||||
void reset_transport_speed (TransportRequestSource origin = TRS_UI);
|
||||
|
||||
void request_transport_speed (double speed, TransportRequestSource origin = TRS_UI);
|
||||
void request_default_transport_speed (double speed, TransportRequestSource origin = TRS_UI);
|
||||
void request_transport_speed_nonzero (double, TransportRequestSource origin = TRS_UI);
|
||||
void request_overwrite_buffer (boost::shared_ptr<Track>, OverwriteReason);
|
||||
void adjust_playback_buffering();
|
||||
|
|
|
@ -44,6 +44,7 @@ class LIBARDOUR_API SessionEvent {
|
|||
public:
|
||||
enum Type {
|
||||
SetTransportSpeed,
|
||||
SetDefaultTransportSpeed,
|
||||
Locate,
|
||||
LocateRoll,
|
||||
LocateRollLocate,
|
||||
|
|
|
@ -921,6 +921,10 @@ Session::process_event (SessionEvent* ev)
|
|||
TFSM_SPEED (ev->speed);
|
||||
break;
|
||||
|
||||
case SessionEvent::SetDefaultTransportSpeed:
|
||||
set_default_play_speed (ev->speed);
|
||||
break;
|
||||
|
||||
case SessionEvent::StartRoll:
|
||||
TFSM_ROLL ();
|
||||
break;
|
||||
|
|
|
@ -319,7 +319,7 @@ Session::default_play_speed ()
|
|||
* @param speed New speed
|
||||
*/
|
||||
void
|
||||
Session::set_default_play_speed (double spd, TransportRequestSource origin)
|
||||
Session::set_default_play_speed (double spd)
|
||||
{
|
||||
_transport_fsm->set_default_speed(spd);
|
||||
TFSM_SPEED(spd);
|
||||
|
@ -792,6 +792,18 @@ Session::request_transport_speed (double speed, TransportRequestSource origin)
|
|||
queue_event (ev);
|
||||
}
|
||||
|
||||
void
|
||||
Session::request_default_transport_speed (double speed, TransportRequestSource origin)
|
||||
{
|
||||
if (synced_to_engine()) {
|
||||
return;
|
||||
}
|
||||
|
||||
SessionEvent* ev = new SessionEvent (SessionEvent::SetDefaultTransportSpeed, SessionEvent::Add, SessionEvent::Immediate, 0, speed);
|
||||
DEBUG_TRACE (DEBUG::Transport, string_compose ("Request default transport speed = %1 as default = %2\n", speed));
|
||||
queue_event (ev);
|
||||
}
|
||||
|
||||
/** Request a new transport speed, but if the speed parameter is exactly zero then use
|
||||
* a very small +ve value to prevent the transport actually stopping. This method should
|
||||
* be used by callers who are varying transport speed but don't ever want to stop it.
|
||||
|
|
Loading…
Reference in New Issue