From eb4dfb9d599d26535cd9ba1d6660bc73e8b5808f Mon Sep 17 00:00:00 2001 From: wakonig_k Date: Tue, 8 Sep 2026 10:10:52 +0200 Subject: [PATCH] fix(camera): stop live mode before disconnecting to prevent polling --- .../allied_vision_cameras/allied_vision_aravis_camera.py | 2 ++ csaxs_bec/devices/ids_cameras/ids_camera.py | 2 ++ tests/tests_devices/test_allied_vision_aravis_camera.py | 1 + tests/tests_devices/test_ids_camera.py | 1 + 4 files changed, 6 insertions(+) diff --git a/csaxs_bec/devices/allied_vision_cameras/allied_vision_aravis_camera.py b/csaxs_bec/devices/allied_vision_cameras/allied_vision_aravis_camera.py index 5e41faf0..92a41c7f 100644 --- a/csaxs_bec/devices/allied_vision_cameras/allied_vision_aravis_camera.py +++ b/csaxs_bec/devices/allied_vision_cameras/allied_vision_aravis_camera.py @@ -247,6 +247,8 @@ class AlliedVisionAravisCamera(PSIDeviceBase): def on_destroy(self): """Clean up resources when the device is destroyed.""" + # Stop acquisition before disconnecting so the live thread cannot keep polling. + self.stop_live_mode() self.cam.on_disconnect() super().on_destroy() diff --git a/csaxs_bec/devices/ids_cameras/ids_camera.py b/csaxs_bec/devices/ids_cameras/ids_camera.py index e429c914..7f63241a 100644 --- a/csaxs_bec/devices/ids_cameras/ids_camera.py +++ b/csaxs_bec/devices/ids_cameras/ids_camera.py @@ -289,6 +289,8 @@ class IDSCamera(PSIDeviceBase): def on_destroy(self): """Clean up resources when the device is destroyed.""" + # Stop acquisition before disconnecting so the live thread cannot keep polling. + self.stop_live_mode() self.cam.on_disconnect() super().on_destroy() diff --git a/tests/tests_devices/test_allied_vision_aravis_camera.py b/tests/tests_devices/test_allied_vision_aravis_camera.py index b3134d06..d5951284 100644 --- a/tests/tests_devices/test_allied_vision_aravis_camera.py +++ b/tests/tests_devices/test_allied_vision_aravis_camera.py @@ -23,6 +23,7 @@ def allied_vision_camera(): camera.cam.width = 2 camera.cam.height = 2 yield camera + camera.stop_live_mode() def test_mask_setter_getter(allied_vision_camera): diff --git a/tests/tests_devices/test_ids_camera.py b/tests/tests_devices/test_ids_camera.py index 1c639b4b..2279e10e 100644 --- a/tests/tests_devices/test_ids_camera.py +++ b/tests/tests_devices/test_ids_camera.py @@ -28,6 +28,7 @@ def ids_camera(): camera.cam.cam.width.value = 2 camera.cam.cam.height.value = 2 yield camera + camera.stop_live_mode() def test_mask_setter_getter(ids_camera): -- 2.54.0