From 596658d6562596bdada7f1bd9b275ee1adce2128 Mon Sep 17 00:00:00 2001 From: Sven Sager Date: Thu, 17 Aug 2023 07:45:39 +0200 Subject: [PATCH] fix: `autorefresch` with `shared_procimg` writes all outputs automatic Fixes the bug that with automatic process image update and shared_procimg, outputs of devices are also written without automatic update enabled. Signed-off-by: Sven Sager --- src/revpimodio2/device.py | 4 ---- src/revpimodio2/helper.py | 4 +++- src/revpimodio2/modio.py | 2 -- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/revpimodio2/device.py b/src/revpimodio2/device.py index 6631e59..f2089e1 100644 --- a/src/revpimodio2/device.py +++ b/src/revpimodio2/device.py @@ -531,10 +531,6 @@ class Device(object): with self._filelock: self._shared_write.clear() self._shared_procimg = True if activate else False - if self._shared_procimg and self not in self._modio._lst_shared: - self._modio._lst_shared.append(self) - elif not self._shared_procimg and self in self._modio._lst_shared: - self._modio._lst_shared.remove(self) def syncoutputs(self) -> bool: """ diff --git a/src/revpimodio2/helper.py b/src/revpimodio2/helper.py index d0ae906..f1e9176 100644 --- a/src/revpimodio2/helper.py +++ b/src/revpimodio2/helper.py @@ -531,7 +531,9 @@ class ProcimgWriter(Thread): continue try: - for dev in self._modio._lst_shared: + for dev in self._modio._lst_refresh: + if not dev._shared_procimg: + continue # Set shared outputs before reading process image for io in dev._shared_write: if not io._write_to_procimg(): diff --git a/src/revpimodio2/modio.py b/src/revpimodio2/modio.py index b558fd5..67a8fee 100644 --- a/src/revpimodio2/modio.py +++ b/src/revpimodio2/modio.py @@ -69,7 +69,6 @@ class RevPiModIO(object): "_autorefresh", "_buffedwrite", "_configrsc", "_debug", "_devselect", \ "_exit", "_exit_level", "_imgwriter", "_ioerror", \ "_length", "_looprunning", "_lst_devselect", "_lst_refresh", \ - "_lst_shared", \ "_maxioerrors", "_monitoring", "_myfh", "_myfh_lck", \ "_procimg", "_replace_io_file", "_run_on_pi", \ "_set_device_based_cycle_time", "_simulator", "_shared_procimg", \ @@ -135,7 +134,6 @@ class RevPiModIO(object): self._length = 0 self._looprunning = False self._lst_refresh = [] - self._lst_shared = [] self._maxioerrors = 0 self._myfh = None self._myfh_lck = Lock()