summaryrefslogtreecommitdiff
path: root/libs/ardour/session_transport.cc
AgeCommit message (Collapse)Author
2020-02-24Zero x-run count after session-load and engine restartRobin Gareus
2020-02-21avoid double-locate call when locating-while-stoppedPaul Davis
Session::locate() used TransportFSM::stopped() to determine if realtime stop was required. But this would return false, since the motion state at that time is WaitingForLocate. So invert the test and use !TransportFSM::rolling
2020-02-20change transport API, session API, transportFSM API to move reverse ↵Paul Davis
management and motion state (partially) into TFSM
2020-02-19remove "destination_sample" from API for Session::set_transport_speed()Paul Davis
This was a leftover from changes made for Tracks Live, related to the concept of an auto-return preference. We don't use this anywhere in Ardour or Mixbus, and the concept should eventually be removed entirely.
2020-01-28fix previous commit, and another instance of the same (incorrect ↵Paul Davis
constructor) issue
2020-01-28fix assert-crash caused by not constructing a StopTransport event correctlyPaul Davis
2020-01-27Fix sending MMC Start/Stop messagesRobin Gareus
Ardour 5.x slave check was incorrectly ported to A6's TMM: In Ardour 5 the comparison tested for *not* MTC: ``` if (!dynamic_cast<MTC_Slave*>(_slave)) { ..send MMC.. } ``` Other MMC messages (Record, Locate) are sent unconditionally.
2020-01-26Fix Loop-length (no pre-roll on loop-iterations)Robin Gareus
2020-01-25remove debug outputPaul Davis
2020-01-23add more debug outputPaul Davis
2020-01-23use Session::locate_initiated(), appropriatelyPaul Davis
2020-01-23add Session::locate_initiated()Paul Davis
This differs from ::locate_pending() by covering either phase of a locate - declick or refill
2020-01-23after the butler has finished work, by definition there is nothing left to doPaul Davis
2020-01-23variable not used without debug modePaul Davis
2020-01-21do not clear any PostTransportWork flags in butler threadPaul Davis
doing this was causing the TFSM to get stuck in "WaitingForButler"
2020-01-20fix API and use of Session::force_locate()Paul Davis
Because of the addition of LocateTransportDisposition, this call was unconditionally forcing a roll during startup
2020-01-18rename DoTheRightThing to RollIfAppropriatePaul Davis
2020-01-18Session::request_locate() takes a tri-valued second argument for ↵Paul Davis
"roll-after-locate" This allows callers to defer logic about auto-play/current rolling state and more to TransportFSM where it can be cnentralized and is less ambiguous
2019-12-29add EMIT_SIGNAL commentPaul Davis
2019-12-29add Session::transport_stopped_or_stopping()Paul Davis
Session::TransportStateChanged notifies about transport stop before the stop is complete (i.e. at the start of the declick). Various other objects (notably control surfaces) connect to this signal and use it to modify their displayed state. We need a method that can tell them we are stopped (or stopping) even though we are not "fully" stopped yet. This is that method
2019-12-27fix JACK transport syncPaul Davis
key change: to sync with JACK always locate jack-position PLUS buffer-sized-rounded-worst_latency_preroll() ahead
2019-12-27add new Session method to return the worst_latency_preroll() value rounded ↵Paul Davis
up to the nearest buffer size
2019-12-11use process lock to lock out process() during playback buffer resizingPaul Davis
2019-12-10revert to single buffer for disk playback, and 5.x-style overwritePaul Davis
Also address issues with MIDI and also atomicity of _pending_overwrite
2019-12-07fix behavior when pressing l to loop (not in loop-is-mode) and the required ↵Paul Davis
stop-during locate cancels looping
2019-12-06Clear TransportAbort flag after stopRobin Gareus
This fixes an issue with unresponsive transport controls after an abort (e.g. post-export).
2019-12-05changes to use overwrite-buffers when loop is disabled or loop range changedPaul Davis
2019-11-23fix incorrect removal of autoloop event when loop bounds are changed while ↵Paul Davis
looping
2019-11-22redesign of declicking and fades around loop boundariesPaul Davis
2019-11-18Latency compensation is independent of transport-logicRobin Gareus
This also fixes a concurrency issue when when non-realtime-stop and graph-reorder or other rt-latency changes coincide.
2019-11-15NO-OP: move bracePaul Davis
2019-11-15when synced to JACK transport, transport requests go there first.Paul Davis
2019-11-15fix behavior of Session::maybe_stop() when synced to JACK TransportPaul Davis
2019-11-15make comment more accuratePaul Davis
2019-11-15consolidate Session::locate() and Session::do_locate()Paul Davis
The first no longer needs to handle requests by passing them to JACK transport
2019-11-15eliminate hacky design for being able to deliver the correct time as JACK ↵Paul Davis
timebase master
2019-11-08Fix loop/pre-rollRobin Gareus
Pre-roll to fill buffers only needs to be done once when starting to play or when locating. Seamless looping just continues. Every processor takes the loop position into account locally.
2019-11-06fix unconditional note resolution during DiskReader::realtime_locate()Paul Davis
When looping, we do not want to resolve notes at the end of the loop via ::realtime_locate() - ::get_midi_playback() has already taken care of this. But when not looping, we need this. So, add an argument to tell all interested parties whether the locate is for a loop end or not
2019-11-04fix a bad transition in the transportFSM.Paul Davis
2019-11-02don't locate when enabling loop if loop-is-modePaul Davis
2019-11-02remove unused parameter from Session::set_play_loop() APIPaul Davis
2019-11-01don't send TFSM event LocateDone after a locate-for-loop-endPaul Davis
See comment for explanation
2019-11-01remove seamless looping as an option (it's now the only kind of looping we ↵Paul Davis
support)
2019-10-29missing part of working loopingPaul Davis
2019-10-29get looping to work againPaul Davis
2019-10-28provide a mechanism to decide if Session::update_latency_compensation() is ↵Paul Davis
being called as part of a callback from the backend. If it is, do not call AudioEngine::update_latencies() to avoid JACK1-style deadlock
2019-10-27make transport work after rewind/ffwd are usedPaul Davis
2019-10-26Fix latency compensation race-conditionRobin Gareus
Remove need for explicit `initialize_latencies` call that used to be called from GUI-thread post_engine_init(), as well as Session::engine_running(). Further reduce calls, `graph_reordered` implies a latency-update and fix ordering issue. update_latency_compensation() must be called *after* resort_routes().
2019-09-25goodbye Profile->...trxPaul Davis
2019-09-25goodbye USE_TRACKS_CODE_FEATURES and is_tracks_buildPaul Davis