The queue-level fix for the live-follow OOM bounded how many datasets are
in flight, but not what each tick costs. Three handlers did full-dataset or
full-detector work per tick regardless of whether their window was open:
- the calibration window copied the whole pixel mask (GetMask returns a
reference; it was taken by value), memcpy'd it and ran a full-resolution
recolour on the GUI thread;
- the image-list window rebuilt one row of eight QStandardItems per image,
and then repainted every cell of the model on every frame to move a
one-row highlight;
- the dataset-info plot was rebuilt twice per tick, because setCurrentIndex
fires currentIndexChanged -> comboBoxSelected -> UpdatePlot and the
caller then called UpdatePlot again.
The first two now defer to showEvent while hidden, following the pattern
JFJochViewerReciprocalSpaceWindow::rebuildGL already uses; the highlight
repaints only the two rows that change; and the combo is blocked around
setCurrentIndex so the plot is built once.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>