Close pass four: undetented host curve read, LiveValues guard, ordering assert, static-lane fix, docs
Points toPlain's exponent arm at the undetented curve map so host reads match the editor; adds a sizeof guard plus field-poison test for LiveValues::operator==; skips the model write when an automation value hasn't moved; corrects five stale doc citations.
This commit is contained in:
@@ -70,6 +70,13 @@ struct LiveValues {
|
||||
// The seqlock copies the block as raw bytes, which is only defensible for a plain value type.
|
||||
static_assert(std::is_trivially_copyable_v<LiveValues>,
|
||||
"the live block is copied under a seqlock — it must stay a plain value");
|
||||
// Guards operator== against silent staleness: a member added to the struct above changes this
|
||||
// size, so the assert fails at the new member's own commit instead of leaving a live control
|
||||
// that never reaches a sounding voice with no compiler or test signal. Confirmed 352 bytes,
|
||||
// MSVC 19.44 x64, Release (`SizeProbe<sizeof(LiveValues)>`, an incomplete-template size probe
|
||||
// whose error message reports the value). Bump the literal AND operator== together.
|
||||
static_assert(sizeof(LiveValues) == 352,
|
||||
"a member was added or removed — extend operator== in live_params.cpp to match");
|
||||
|
||||
// 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
|
||||
|
||||
Reference in New Issue
Block a user