Loop-crossfade-ux review fixes: parked-drag no longer fakes LOOP OFF, waveform label contrast fixed, hover memoizes its bank read
Also corrects the cap-area, em-dash, glyph-overhang and heuristic-comment findings noted in review.
This commit is contained in:
@@ -337,9 +337,10 @@ private:
|
||||
// instance's own SampleRefs as the self-contained fallback. "" when unresolvable.
|
||||
std::string samplePathFor(const std::string& sampleId) const;
|
||||
|
||||
// The effective loop + start markers for the loaded capture. The state machine behind them
|
||||
// — which stored source wins, when the pair re-parks, what the two OFF states mean — is the
|
||||
// pure loop_marks module's; this only reads the bank intrinsic it cannot see.
|
||||
// The effective loop + start markers for the loaded capture; the state machine behind them
|
||||
// is the pure loop_marks module's. With no override set this costs a bridge read plus a bank
|
||||
// parse — hoverWaveform calls it on every WM_MOUSEMOVE, so the answer is memoized (see
|
||||
// HoldNeedKey below, which this shares) rather than paid per move.
|
||||
SetupMarkers pickedMarkers(std::int64_t frames) const;
|
||||
|
||||
// Whether the loop controls answer at all: the sustain loop is Gate-only, so in Trigger the
|
||||
@@ -365,16 +366,22 @@ private:
|
||||
bool resolveBakeHoldNeeded();
|
||||
|
||||
// What that answer was last computed against. Invalidated wholesale by refreshFromBank,
|
||||
// which is where the bank half of the input changes.
|
||||
// which is where the bank half of the input changes. pickedMarkers' own memo (below) shares
|
||||
// this key shape rather than declaring a second one; resolveBakeHoldNeeded leaves startPoint
|
||||
// at its default (nullopt) since its own answer doesn't depend on it.
|
||||
struct HoldNeedKey {
|
||||
std::string sampleId;
|
||||
std::optional<SampleLoop> loopOverride;
|
||||
std::int64_t crossfade = 0;
|
||||
std::optional<std::int64_t> startPoint;
|
||||
bool operator==(const HoldNeedKey& other) const;
|
||||
};
|
||||
HoldNeedKey holdNeedKey_;
|
||||
bool holdNeedValid_ = false;
|
||||
bool holdNeedAnswer_ = false;
|
||||
mutable HoldNeedKey marksKey_;
|
||||
mutable SetupMarkers marksCache_;
|
||||
mutable bool marksValid_ = false;
|
||||
|
||||
// Writes `m` into params_ as the loop/start override. Does NOT call commitAndReload —
|
||||
// callers decide live-drag vs final commit.
|
||||
|
||||
Reference in New Issue
Block a user