diff --git a/src/display_manager.py b/src/display_manager.py index 779edab8..04860fbf 100644 --- a/src/display_manager.py +++ b/src/display_manager.py @@ -1439,8 +1439,6 @@ class DisplayManager: """Clean up resources.""" if hasattr(self, '_snapshot_cond'): self._stop_snapshot_writer() - if getattr(self, 'frame_timing', None) is not None: - self.frame_timing.close() if hasattr(self, 'matrix') and self.matrix is not None: try: self.matrix.Clear() @@ -1452,6 +1450,9 @@ class DisplayManager: self._new_canvas(self.width, self.height) except (OSError, RuntimeError, ValueError, MemoryError): logger.debug("Canvas reset during cleanup failed", exc_info=True) + # The stall watchdog would otherwise outlive this manager. + if getattr(self, 'frame_timing', None) is not None: + self.frame_timing.close() # Reset the singleton state when cleaning up DisplayManager._instance = None