eba0b476054e3777be7afdbbe4375ff9836249e4
image is a queued cross-thread signal and Qt's event queue has no high-water mark, so this queue grew without bound independently of ZMQ: with a 50 Hz feed and a GUI painting slower, the displayed frame fell further behind for as long as the stream ran. Measured on a stand-in at 15 ms decode / 25 ms paint, the displayed frame aged from 40 ms to 2010 ms over three seconds and kept going. Two changes: - Emit once and fan out on the GUI thread to whichever view is actually on screen, rather than connecting all three SampleCameraImageLabels. Two of the three are always hidden (tab / compact page / portrait page), so this is one repaint per frame instead of three. - Cap the frames in flight and drop rather than queue past it. The cap is 2, not 1, so a frame can be queued while the GUI paints the other: at 1 the GUI idles waiting for the next decode (33.3 fps displayed), at 2 it does not (40.0 fps) for one extra frame of latency. Both stay bounded — 40 ms and 62 ms respectively, flat over the run. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DVqbXPoeHyqrQq5Vc8EcYP
AareDAQ
AareDAQ is the Data Acquisition system for MX beamlines at PSI.