443a25ebde2c55b8363b2ab41bfe86c84f04000c
CI / lint (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
CI / lint (pull_request) Canceled after 6s
CI / test (3.12) (pull_request) Canceled after 3s
CI / test (3.13) (pull_request) Canceled after 1s
CI / test (3.14) (pull_request) Canceled after 0s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Canceled after 0s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Canceled after 0s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Canceled after 0s
CI / test-with-coverage (pull_request) Canceled after 0s
CI / coverage-analysis (pull_request) Canceled after 0s
QPixmap is a GUI-thread-only class in Qt; the worker was constructing one per frame via QPixmap.fromImage. It happens to work with the raster backend, which is why this has not bitten us, but it is not supported and the guarantee is not ours to rely on. The subscriber now emits QImage — which is explicitly safe to build and move between threads — and _on_sample_camera_frame converts once on the GUI thread before handing the pixmap to the visible view. No extra copy: the .copy() that detaches the QImage from the numpy buffer was already there. Verified end to end against a real PUB socket: the payload delivered is QImage, the slot runs only on the main thread, and frames still decode. 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.