Restore the bank fold and usage publish to the resume path, guard setActive against repeats, and make the meter fold's bound literal

The resume also hands back to a full reload when the fold moves the loaded capture's decode source, so the refs table and the audio cannot skew.
This commit is contained in:
2026-08-02 13:15:47 -04:00
parent 5c6525fb91
commit da14509ab5
15 changed files with 218 additions and 76 deletions
+4 -3
View File
@@ -20,7 +20,8 @@ static int g_fail = 0;
// Stands in for std::atomic<float> with ONE scripted interference: the first compare-exchange
// runs the UI's consume (identity reinstalled, the window taken) and reports failure exactly as
// the real CAS does — expected updated to what the consume left. Everything after is ordinary.
// the real CAS does — expected updated to what the consume left. Everything after is ordinary,
// which is what makes the retry count assertable: a strong CAS fails only under interference.
struct ConsumingAccumulator {
float value;
float identity;
@@ -29,8 +30,8 @@ struct ConsumingAccumulator {
float load(std::memory_order) const { return value; }
bool compare_exchange_weak(float& expected, float desired, std::memory_order,
std::memory_order) {
bool compare_exchange_strong(float& expected, float desired, std::memory_order,
std::memory_order) {
if (casCount++ == 0) {
consumed = value;
value = identity;