Age | Commit message (Collapse) | Author |
|
Since ead883302fe800ae, it is no longer possible to use a null
pointer SessionEvent::track as flag to indicate overriding all
buffers.
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
0.05 seconds per track
Leave debug output in place for now to get some numbers from any testers
|
|
|
|
|
|
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
|
|
|
|
DiskReader::{inc,dec}_no_disk_output()
|
|
This is also needed when exporting.
|
|
"shift" offset
There is still a bug related to "shift" that causes a playback discontinuity
|
|
management and motion state (partially) into TFSM
|
|
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.
|
|
"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
|
|
transport
|
|
key change: to sync with JACK always locate jack-position PLUS buffer-sized-rounded-worst_latency_preroll() ahead
|
|
Note: there is no global state for "the" transport master, since we have several at all times now
|
|
|
|
|
|
Also address issues with MIDI and also atomicity of _pending_overwrite
|
|
|
|
|
|
|
|
while looping
|
|
Heuristic and actions when a locate is needed are different for
JACK transport than TC
|
|
When stopped start_sample == end_sample.
This fixes accidental automation lookup,
as well as plugin time/position information.
|
|
|
|
|
|
|
|
boost::shared_ptr<Track> rather than Route
(this the raw pointers used inside SessionEvent)
|
|
support)
|
|
|
|
being called as part of a callback from the backend.
If it is, do not call AudioEngine::update_latencies() to avoid JACK1-style deadlock
|
|
|
|
Redundancy Department)
|
|
Still need to use boost::intrusive to managed qeued/deferred containers
|
|
|
|
|
|
|
|
Simple test/example code. Eventually this is to replace
Session::process_event() and Session::realtime_*() methods
are to become transition actions.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|