c842856fe0482e93374c561f3fb83de7d39e59fe
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) Failing after 38s
CI / test (3.12) (pull_request) Successful in 1m0s
CI / test (3.13) (pull_request) Successful in 1m2s
CI / test (3.14) (pull_request) Successful in 1m1s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 1m8s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 1m14s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m19s
CI / test-with-coverage (pull_request) Successful in 1m26s
CI / coverage-analysis (pull_request) Failing after 3s
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.