--- a/BeremizIDE.py Mon Mar 01 15:46:23 2021 +0100
+++ b/BeremizIDE.py Tue Mar 02 09:25:55 2021 +0100
@@ -122,7 +122,7 @@
# to prevent rapid fire on rising log panel
+ self.StackLock = Lock() self.RefreshLock = Lock()
self.TimerAccessLock = Lock()
@@ -131,22 +131,22 @@
self.LastRefreshTimer = None
def write(self, s, style=None):
- if self.lock.acquire():
- self.stack.append((s, style))
- current_time = gettime()
+ self.StackLock.acquire() + self.stack.append((s, style)) + self.StackLock.release() + current_time = gettime() + with self.TimerAccessLock: + if self.LastRefreshTimer is not None: + self.LastRefreshTimer.cancel() + self.LastRefreshTimer = None + elapsed = current_time - self.LastRefreshTime + if elapsed > REFRESH_PERIOD: with self.TimerAccessLock:
- if self.LastRefreshTimer is not None:
- self.LastRefreshTimer.cancel()
- self.LastRefreshTimer = None
- elapsed = current_time - self.LastRefreshTime
- if elapsed > REFRESH_PERIOD:
- with self.TimerAccessLock:
- if self.LastRefreshTimer is None:
- self.LastRefreshTimer = Timer(REFRESH_PERIOD - elapsed, self._timer_expired)
- self.LastRefreshTimer.start()
+ if self.LastRefreshTimer is None: + self.LastRefreshTimer = Timer(REFRESH_PERIOD - elapsed, self._timer_expired) + self.LastRefreshTimer.start() def _timer_expired(self):
@@ -171,7 +171,8 @@
+ self.output.AnnotationClearAll() + self.StackLock.acquire() for s, style in self.stack:
@@ -191,7 +192,7 @@
if style != self.black_white:
self.output.SetStyling(text_len, style)
+ self.StackLock.release() self.LastRefreshTime = gettime()