summaryrefslogtreecommitdiff
path: root/libs/ardour/session_process.cc
AgeCommit message (Collapse)Author
2020-04-12Fix loop range changes while playing - #8001Robin Gareus
Since ead883302fe800ae, it is no longer possible to use a null pointer SessionEvent::track as flag to indicate overriding all buffers.
2020-03-29Set thread-names (libs)Robin Gareus
2020-03-28Don't use shared-pointers in cross thread event structsRobin Gareus
This fixes a deadlock when closing the session. Session::destroy() takes the engine-lock while removing unhandled session-events. In [1], the event-queue held a last reference to a Track, and releasing that object triggered events (here ~IO) that required the lock. --- [1] #2 0x0041743a in Glib::Threads::Mutex::Lock::Lock at /home/ardour/linux-armhf/stack/include/glibmm-2.4/glibmm/threads.h:643 #3 0xb67433ba in ARDOUR::IO::~IO at ../libs/ardour/io.cc:105 #4 0xb6743612 in ARDOUR::IO::~IO at ../libs/ardour/io.cc:111 #5 0xb6758e66 in boost::checked_delete<ARDOUR::IO> at /home/ardour/linux-armhf/stack/include/boost/core/checked_delete.hpp:34 #6 0xb675912c in boost::detail::sp_counted_impl_p<ARDOUR::IO>::dispose at /home/ardour/linux-armhf/stack/include/boost/smart_ptr/detail/sp_counted_impl.hpp:92 #7 0x004178d8 in boost::detail::sp_counted_base::release at /home/ardour/linux-armhf/stack/include/boost/smart_ptr/detail/sp_counted_base_sync.hpp:129 #8 0x00417986 in boost::detail::shared_count::~shared_count at /home/ardour/linux-armhf/stack/include/boost/smart_ptr/detail/shared_count.hpp:426 #9 0xb662343a in boost::shared_ptr<ARDOUR::IO>::~shared_ptr at /home/ardour/linux-armhf/stack/include/boost/smart_ptr/shared_ptr.hpp:341 #10 0xb6a4af7a in ARDOUR::Route::~Route at ../libs/ardour/route.cc:282 #11 0xb6b9404c in ARDOUR::Track::~Track at ../libs/ardour/track.cc:71 #12 0xb697164a in ARDOUR::MidiTrack::~MidiTrack at ../libs/ardour/midi_track.cc:94 #13 0xb697177a in ARDOUR::MidiTrack::~MidiTrack at ../libs/ardour/midi_track.cc:96 #14 0xb6ac525a in boost::checked_delete<ARDOUR::MidiTrack> at /home/ardour/linux-armhf/stack/include/boost/core/checked_delete.hpp:34 #15 0xb6acde00 in boost::detail::sp_counted_impl_p<ARDOUR::MidiTrack>::dispose at /home/ardour/linux-armhf/stack/include/boost/smart_ptr/detail/sp_counted_impl.hpp:92 #16 0x004178d8 in boost::detail::sp_counted_base::release at /home/ardour/linux-armhf/stack/include/boost/smart_ptr/detail/sp_counted_base_sync.hpp:129 #17 0x00417986 in boost::detail::shared_count::~shared_count at /home/ardour/linux-armhf/stack/include/boost/smart_ptr/detail/shared_count.hpp:426 #18 0xb664dca6 in boost::shared_ptr<ARDOUR::Track>::~shared_ptr at /home/ardour/linux-armhf/stack/include/boost/smart_ptr/shared_ptr.hpp:341 #19 0xb6aaf67e in ARDOUR::SessionEvent::~SessionEvent at ../libs/ardour/ardour/session_event.h:42 #20 0xb6a91a88 in ARDOUR::Session::destroy at ../libs/ardour/session.cc:753 #21 0xb6a8fb20 in ARDOUR::Session::~Session at ../libs/ardour/session.cc:460 #22 0xb6a9075e in ARDOUR::Session::~Session at ../libs/ardour/session.cc:46
2020-03-27fix user-driven varispeedPaul Davis
2020-03-24add debug trace output for locatePaul Davis
2020-03-23don't stop if master sync is lost and user chose to just keep rollingPaul Davis
2020-03-23remove debug outputPaul Davis
2020-03-23add in timing for disk buffer reload after locate, to replace hard-coded ↵Paul Davis
0.05 seconds per track Leave debug output in place for now to get some numbers from any testers
2020-03-22fix slaving to JACK transport (again!)Paul Davis
2020-03-22fix up JACK transport to use master strategy designPaul Davis
2020-03-20redesign chasing the transport masterPaul Davis
Substantive comments associated with code in Session::plan_master_strategy. Known not to work for reverse TC. Also, the JACK related code has not yet been tested
2020-03-13when locating to follow a transport master, reset engine DLLPaul Davis
2020-03-13add new API to TransportMasterManager to manage use of ↵Paul Davis
DiskReader::{inc,dec}_no_disk_output()
2020-03-06Separate pre-roll cycle calculationRobin Gareus
This is also needed when exporting.
2020-02-21centralize determination of "read-audio-data-in-reverse" and fix seek ↵Paul Davis
"shift" offset There is still a bug related to "shift" that causes a playback discontinuity
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-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-29recomment a DEBUG_TRACE statement that generates too much output with -D ↵Paul Davis
transport
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-27remove unused memberPaul Davis
Note: there is no global state for "the" transport master, since we have several at all times now
2019-12-27variable renamePaul Davis
2019-12-27improve parseability of a commentPaul 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-05remove mistakenly left in session event enumPaul Davis
2019-12-05changes to use overwrite-buffers when loop is disabled or loop range changedPaul Davis
2019-11-23tweak comment textPaul Davis
2019-11-232nd part of fix for autoloop event removal when loop bounds are changed ↵Paul Davis
while looping
2019-11-15improve behavior when synced to JACK transportPaul Davis
Heuristic and actions when a locate is needed are different for JACK transport than TC
2019-11-14Fix cycle-end position when not rollingRobin Gareus
When stopped start_sample == end_sample. This fixes accidental automation lookup, as well as plugin time/position information.
2019-11-03Fix timecode generation after split-cyclesRobin Gareus
2019-11-02use new API to make locate happenPaul Davis
2019-11-02remove unused parameter from Session::set_play_loop() APIPaul Davis
2019-11-02refactor SessionEvent and DiskIO so that we pass around ↵Paul Davis
boost::shared_ptr<Track> rather than Route (this the raw pointers used inside SessionEvent)
2019-11-01remove seamless looping as an option (it's now the only kind of looping we ↵Paul Davis
support)
2019-11-01cut down on DEBUG::Transport noisePaul 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-09-22improve debug outputPaul Davis
2019-09-20rename TransportFSM::FSMEvent to TransportFSM::Event (c/o the Department of ↵Paul Davis
Redundancy Department)
2019-09-19replace boost::msm - based FSM for transport with one written in "plain C++"Paul Davis
Still need to use boost::intrusive to managed qeued/deferred containers
2019-09-17add finite state machine to control/manage transport statePaul Davis
2019-08-03Update libardour GPL boilerplate and (C) from git logRobin Gareus
2019-03-18NO-OP: Use API to set/test state-of-the-stateRobin Gareus
2019-03-14Unused skeleton of the transport state-machineRobin Gareus
Simple test/example code. Eventually this is to replace Session::process_event() and Session::realtime_*() methods are to become transition actions.
2019-03-03debug trace output tweaksPaul Davis
2019-03-03remove debug outputPaul Davis
2019-03-03remove conditional surrounding wait-for-master-to-catch-us logicPaul Davis
2019-02-26enhanced debug trace outputPaul Davis
2019-02-26reorder call to ::track_transport_master() so that delta is computed correctlyPaul Davis
2019-02-06Fix rolling backwardsRobin Gareus
When speed is -1, start_sample >= end_sample and _transport_sample needs to be decremented. Session::process_with_events() did this correctly, this change makes Session::process_without_events() behave identically.