Bound the automation hold to the window the model has not caught up on, and make that authority model stated, enforced and tested
This commit is contained in:
@@ -71,6 +71,16 @@ struct LiveValues {
|
||||
static_assert(std::is_trivially_copyable_v<LiveValues>,
|
||||
"the live block is copied under a seqlock — it must stay a plain value");
|
||||
|
||||
// FIELD-wise equality, and it must never be "simplified" into a memcmp. LiveValues carries
|
||||
// padding, and nothing gives that padding a determinate value across a copy: NRVO is optional
|
||||
// and the implicit copy/move is specified member-wise, so two blocks folded from the same
|
||||
// parameter set are NOT reliably byte-equal. A byte compare therefore reports differences that
|
||||
// do not exist — which is exactly what it did before this existed. Listed member by member, so a
|
||||
// member added to the block above must be added here as well; this sits directly beneath the
|
||||
// struct for that reason.
|
||||
bool operator==(const LiveValues& a, const LiveValues& b);
|
||||
inline bool operator!=(const LiveValues& a, const LiveValues& b) { return !(a == b); }
|
||||
|
||||
// The ONE derivation of the live block from the parameter set. Every publisher goes through
|
||||
// here so there is a single site to keep in step with PlayParams. `keyTrack` is passed in
|
||||
// because it belongs to the capture/instrument scalar beside the play bundle, not to
|
||||
|
||||
Reference in New Issue
Block a user