mirror of
https://github.com/got-feedBack/feedBack-desktop.git
synced 2026-07-21 12:22:34 +00:00
CodeRabbit caught a real bug in the previous commit's fix. The latch mirrors the NATIVE refcount, but it was flipped before the invoke resolved: a rejected release left it reading "released" while the engine still held the suppression, so every later release short-circuited and monitor mute stayed suppressed for good — the same stuck-suppression bug the latch exists to prevent, just one level up. The latch now only stays flipped if the call actually landed, and rolls back otherwise (guarded so a newer call can't be clobbered by a stale rejection). A downlevel addon with no arbiter leaves the latch untouched instead of recording a hold it never acquired. Pins the whole contract with a vm-extracted unit test on the real screen.js function: unpaired acquires hold at most one native suppression, cycles stay balanced across 25 song loads, a rejected release retries, and both the downlevel and sync-throw paths are clean. Fails 3/5 against the original branch (the refcount leak) and 2/5 against the pre-rollback version. |
||
|---|---|---|
| .. | ||
| audio_sanitize | ||
| chordscorer | ||
| contracts | ||
| engine_units | ||
| mlnotedetector | ||
| sandbox | ||
| spike | ||
| _load-ts.js | ||
| audio-chain-persistence.test.js | ||
| audio-effects-executor.test.js | ||
| chain-mutation-storm.test.js | ||
| CMakeLists.txt | ||
| config-bootstrap.test.js | ||
| config-migrations.test.js | ||
| config-paths.test.js | ||
| config-reset.test.js | ||
| contract-check.test.js | ||
| juce-exclusive-type-name.test.js | ||
| ml-note-detection.test.js | ||
| monitor-mute-suppression.test.js | ||
| multi-source.test.js | ||
| napi-arg-fuzz.test.js | ||
| renderer-capability-migration.test.js | ||
| window-bounds.test.js | ||