This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
There already is a shaded coverage frame indicating
if a layer is audible. This leads to a more consistent view.
In addition changing layered mode now has to update the
colors (set_frame_color).
This covers a race condition in session transport that when synced to an
external engine it sometimes occurs that at the end of ::realtime_stop()
::transport_stopped_or_stopping() returns false when ::setup_rec_box() is
called. In this case the rec boxes are not erased when the recoding transport
is stopped.
This fixes this behavior about the remaining rec boxes, however the race
condition remains.
The race condition is reported in #8104. It should be considered reverting this
commit once the race condition is fixed.
Under some circumstances the transport FSM is still in stopping state when
::non_realtime_stop() already emits TransportStatechange. In that case the rec
boxes are not removed if we consider transport stopping == rolling.
THe original determinant of width was:
double const width = ((at->mode() == Destructive) ? 2 : 0);
the conditional is always false now, so the width is a constant (zero)
Copyright-holder and year information is extracted from git log.
git history begins in 2005. So (C) from 1998..2005 is lost. Also some
(C) assignment of commits where the committer didn't use --author.
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode
and video in order to keep the legible
Since 478f26b2ad, transport_rolling() is only true when actually rolling.
Count-in is a no-roll process (don't move playhead, no playhead UI
position interpolation 55b8b448).
But transport isn't exactly stopped either (preparing to roll), so
during count-in transport_stopped() == transport_rolling() == false.
- for those not in the know, this series provides a way to
remove the temporal distortion introduced when using an
audio frame-based gui for music-locked objects.
In short, the gui uses an audio frame representation to move
objects. It displays the object using frame_at_beat(), quantizing
the time value to audio frames. This is fine until the user selects
that frame but expects it to be interpreted as a beat.
Thus beat_at_frame() would not produce the user-expected beat
(temporal quantization error of up to 0.5 audio samples).
This is one method of mapping audio time to music time accurately.
- display selected comtrol points in region gain lines
- display selected points in internal edit mode
- allow dragging of region gain lines in MouseContent mode
This cleans up a lot of false-positives in static analysis
and also helps compilers to optimize code paths in general.
(tagging the fatal stingstream operator as ‘noreturn’ is
far less trivial)