tracking: one ledger, one authority — prune protection and replace-vs-add answered from the same records, fail-safe on unreadable state
This commit is contained in:
@@ -458,14 +458,15 @@ void RunRecaptureFromSource(ReaSamplerSession& session)
|
||||
const bool changed = session.book().updateSampleInPlace(sampleId, updated);
|
||||
if (changed)
|
||||
{
|
||||
// Record the regenerated file in the owned manifest; the superseded file
|
||||
// becomes an orphan for prune to reclaim.
|
||||
session.owned().add(updated.relativePath);
|
||||
// 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.
|
||||
session.bumpBankGeneration();
|
||||
const bool persisted = session.saveToActiveProject(); // book + manifest + generation + MarkProjectDirty
|
||||
const bool persisted = session.saveToActiveProject(); // book + ledger + generation + MarkProjectDirty
|
||||
Undo_EndBlock2(nullptr, persisted ? "ReaSampler: re-capture from source" : "",
|
||||
persisted ? UNDO_STATE_MISCCFG : 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user