Add the FX reclaimer: a debounced, time-boxed convergence loop that offlines parked chains and restores returning ones off the switch path
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
#include "shell/panel/panel_input.h" // bankPanelRefresh / bankPanelNotifyProjectLoaded
|
||||
#include "shell/panel/panel_window.h" // panel lifecycle (init/toggle/open-query/shutdown)
|
||||
#include "shell/persist/session.h" // ReaSamplerSession
|
||||
#include "shell/view/fx_reclaim.h" // the FX reclaimer's tick
|
||||
#include "shell/view/view.h" // applyMode
|
||||
#include "shell/view/view_lanes.h" // reconcileManagedLanes
|
||||
#include "shell/view/view_reconcile.h" // reconcileAppliedFlags
|
||||
@@ -215,6 +216,15 @@ static void OnTimer()
|
||||
reasampler::applyMode(g_session.view(), g_session.view().activeModeId(), nullptr);
|
||||
}
|
||||
|
||||
// Converge the FX chains toward what the view state says they should be — the
|
||||
// 1897ms of TrackFX_SetOffline a mode switch no longer pays synchronously. Same
|
||||
// idle discipline as the realtime fast path above: a SINGLE BOOL TEST when there is
|
||||
// nothing to converge. Ordered AFTER the load block deliberately — a reload replaces
|
||||
// the view model wholesale, and the applyMode above is what re-derives the queue
|
||||
// from it, so draining first would spend a tick against the outgoing model.
|
||||
if (reasampler::g_fxReclaimPending)
|
||||
reasampler::fxReclaimTick(g_session.view(), nullptr);
|
||||
|
||||
reasampler::bankPanelRefresh(); // cheap fingerprint compare; no-op when unchanged/closed
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user