tracking: read the ledger's version, not just write it; clear owned on any block; channel-correct prune recovery
This commit is contained in:
@@ -455,13 +455,13 @@ void RunRecaptureFromSource(ReaSamplerSession& session)
|
||||
// One batched undo point around the in-place mutation; index-only ext-state,
|
||||
// nothing placed on the timeline.
|
||||
Undo_BeginBlock2(nullptr);
|
||||
// Before the index outcome is even known: the render above already wrote the file,
|
||||
// and makeUniqueTag guarantees a NEW path, so this is a second record carrying the
|
||||
// same sampleId as the original. The superseded file becomes an orphan for prune.
|
||||
session.recordCreated(updated, tracking::OriginKind::Recapture);
|
||||
const bool changed = session.book().updateSampleInPlace(sampleId, updated);
|
||||
if (changed)
|
||||
{
|
||||
// Record the regenerated file's birth; the superseded file becomes an orphan
|
||||
// for prune to reclaim. A re-capture onto the same path is a dedup no-op, so
|
||||
// the original birth record — not this one — stays authoritative.
|
||||
session.recordCreated(updated, tracking::OriginKind::Recapture);
|
||||
// Regenerating the same id's audio is exactly why instances need the generation
|
||||
// bump — they'd otherwise keep playing stale audio until reload. Bumped inside
|
||||
// the undo block so undo rolls back the generation with the rest of the blob.
|
||||
|
||||
Reference in New Issue
Block a user