Make the background FX drain visible: a busy cursor over the panel and a footer readout that names its direction, driven off fxReclaimActivity

This commit is contained in:
2026-08-21 14:45:25 -04:00
parent da8401239a
commit 052fbb0d52
9 changed files with 182 additions and 6 deletions
+12
View File
@@ -62,6 +62,18 @@ live in `shell/bank_ops`, a sibling directory, not here.
- **No external UI framework.** iPlug2 / JUCE / VSTGUI are rejected (DS-1). LICE +
reused WDL pieces are the toolkit; reject any path that pulls in a new framework.
- **The FX-drain indicator asks `fxReclaimActivity()` and decides nothing itself.**
`panel_input` polls it once per tick into `g_panel.fxDrain`; the footer readout and the
`WM_SETCURSOR` busy cursor both read that cached state, so paint and cursor cannot
disagree within a tick. The transport gate, the park debounce and the open-undo-block
stand-off are all already folded into that answer, against the reclaim queue's own pinned
project — do not re-evaluate any of them here, and never drive this off `fxReclaimPending`
(true throughout the debounce, when only the opposite direction is eligible).
The indicator reaches only our own window: over REAPER's arrange or mixer the cursor is
REAPER's, and the SDK exposes nothing host-wide. A global `SetSystemCursor` or a message
hook would reach further and is rejected — do not reintroduce either. `IDC_APPSTARTING`
is Windows-only (SWELL ships no equivalent), so on mac/Linux the readout is the whole
indicator.
- **No hit-test geometry in untestable shell code.** Even when reusing a WDL piece
(e.g. a `vwnd` control for a long scroll list), layout/hit-test math stays in pure
CTest-covered modules — do not import a WDL control's retained-mode object model