view: split the deferred FX-park drain by kind — restores stay forced, parks go one FX per idle tick behind a 1s coalescing delay
A rapid A→B→A flip now costs no plugin work: the restore cancels the still-pending park outright. A park that has already written one FX carries a `partial` flag and is superseded by its inverse rather than cancelled, so a half-parked chain is never stranded.
This commit is contained in:
+6
-3
@@ -196,9 +196,12 @@ static void OnTimer()
|
||||
} else {
|
||||
// A mode switch applies its visibility/routing writes synchronously and
|
||||
// leaves the per-FX offline work here, so the new mode paints before the
|
||||
// plugins unload. Idle cost is one empty test. Skipped on a load tick so
|
||||
// the reapply's own intents defer one tick like any other switch's.
|
||||
reasampler::drainDeferredFxParks();
|
||||
// plugins move. Split by intent kind: restores whole (nothing may persist
|
||||
// over a half-applied one), parks one FX per tick. Idle cost is one empty
|
||||
// test each. Skipped on a load tick so the reapply's own intents defer one
|
||||
// tick like any other switch's.
|
||||
reasampler::drainDeferredFxRestores();
|
||||
reasampler::tickDeferredFxParks();
|
||||
}
|
||||
|
||||
reasampler::bankPanelRefresh(); // cheap fingerprint compare; no-op when unchanged/closed
|
||||
|
||||
Reference in New Issue
Block a user