* Both the session-start and session-end point should follow the is-free option
* Rename the end-is-free option to session-range-is-free, to reflect that change
* This fixes the problem: recording before the start marker would move the Start,
even if the user had already fixed the End marker.
* When splitting in MouseObject, entered_region should get priority over selected regions.
This fixes the unexpected case where you try to split an unselected a region, but
a) nothing happens OR
b) some other region (maybe off-screen) is split
* Range mode now has its own option for splits, which can be:
Clear: the selection is cleared.
Preserve: the selection is left as-is. (default)
Force: all the regions that resulted from the split are selected (forcing a tool change).
* Un-hid the additional config options to select only the regions BEFORE or AFTER a split.
* Note: splits made with Cut Tool should be unaffected by these changes.
some older systems (e.g. OSX/PPC) fail to compile with
error: call of overloaded 'llabs(long long int)' is ambiguous
candidates are:
long long int llabs(long long int)
long long int __gnu_cxx::llabs(long long int)
Make _pending_overwrite atomic (butler + process thread).
This also addresses a potential seek before override race.
Seeking will fill the buffers and by the time overwrite_existing_buffers()
is called from there is no space to overwrite anymore.
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.
Keep track of safe reservation:
Data has been read (or was skipped) previously can be read again
up to the allocated "reservation" (which is never overwritten).
This is mainly a NO-OP, introducing a new PlaybackBuffer type
and preparing for its use.
At this point in time, the buffer is just a power-of-two sized
ringbuffer and the disk-reader's read-logic is still unchanged.
Eventually the read and write sample position that are currently
private to the disk-reader can be migrated to be owned by the buffer.
Also Diskreader::read() positions can be matched to read-position ..
+/- buffer reservation and de-click can read w/o committing the read.
Trust that ::reset() works for all transport masters, and call it when engine is stopped. This way
the transport masters are ready to be called again as soon as the engine restarts.