Beremiz.py
changeset 881 68ac754a5a72
parent 875 a8952b79caec
child 900 3e78925125e1
--- a/Beremiz.py	Tue Nov 13 11:36:04 2012 +0100
+++ b/Beremiz.py	Thu Nov 15 22:45:04 2012 +0100
@@ -196,6 +196,7 @@
         self.lock = Lock()
         self.YieldLock = Lock()
         self.RefreshLock = Lock()
+        self.TimerAccessLock = Lock()
         self.stack = []
         self.LastRefreshTime = gettime()
         self.LastRefreshTimer = None
@@ -205,21 +206,27 @@
             self.stack.append((s,style))
             self.lock.release()
             current_time = gettime()
+            self.TimerAccessLock.acquire()
             if self.LastRefreshTimer:
                 self.LastRefreshTimer.cancel()
                 self.LastRefreshTimer=None
+            self.TimerAccessLock.release()
             if current_time - self.LastRefreshTime > REFRESH_PERIOD and self.RefreshLock.acquire(False):
                 self._should_write()
             else:
+                self.TimerAccessLock.acquire()
                 self.LastRefreshTimer = Timer(REFRESH_PERIOD, self._timer_expired)
                 self.LastRefreshTimer.start()
+                self.TimerAccessLock.release()
 
     def _timer_expired(self):
         if self.RefreshLock.acquire(False):
             self._should_write()
         else:
+            self.TimerAccessLock.acquire()
             self.LastRefreshTimer = Timer(REFRESH_PERIOD, self._timer_expired)
             self.LastRefreshTimer.start()
+            self.TimerAccessLock.release()
 
     def _should_write(self):
         wx.CallAfter(self._write)