Stop discarding precomputed FFT data on view switches
The display path hardcoded row_avg_n=0 when checking a file's stored FFT cache, since the main window has no row-averaging control (only the batch-only RowAverageFftOptionsDialog). Once a file was batch-computed with row-averaging, every view switch saw a phantom provenance mismatch and silently launched a full raw recompute, discarding the precomputed data. The display now asks for the stored image at the settings it was actually computed under (bg-sub/pad/row-averaging), rather than the window's live controls, so a stored or already-computed image is always shown once present. Those controls now only affect a first-time compute for an uncached angle or an explicit batch recompute -- never what's already on screen. DC threshold is unaffected: it stays live, since re-masking a cached image is free. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -164,6 +164,25 @@ batching), `_cache_mismatch_notes` says so in the scan info panel, because
|
||||
the symptom otherwise is just "the file I pre-computed got slow again" with
|
||||
no visible cause.
|
||||
|
||||
That divergence note is informational only, not a warning of an impending
|
||||
recompute. The *display* path (`_stored_fft_image`) never asks
|
||||
`cached_rf_image` whether a stored image matches the window's live
|
||||
bg-sub/pad/row-averaging controls — it asks whether the image matches its
|
||||
*own* recorded settings (`sras.precomputed_bg_sub`/`precomputed_pad_factor`/
|
||||
`precomputed_row_avg_n`), which is always true whenever a stored image
|
||||
exists. So presence alone decides whether it's shown; the live controls
|
||||
never gate it. They still matter for two things: a genuinely never-computed
|
||||
angle's first live compute, and an explicit batch recompute — both of which
|
||||
read the live controls and produce new stored data, at which point it's the
|
||||
new data's *own* settings that get self-matched from then on. This is what
|
||||
keeps a view switch (angle, channel, or flipping bg-sub/pad) from ever
|
||||
discarding precomputed data — only an explicit batch recompute does, and it
|
||||
already reloads the file afterward so the new data displays immediately.
|
||||
Row-averaging has no live control to diverge from in the first place (it's
|
||||
only ever set inside the batch dialog), so it never appears in the
|
||||
divergence note — the "Cached images" line's own `row-averaged n=…` phrase
|
||||
already covers it.
|
||||
|
||||
### Two caches, in cost order
|
||||
|
||||
`_refresh_display` consults this window's in-session `_fft_cache`/`_dc_cache`
|
||||
|
||||
Reference in New Issue
Block a user