Beremiz.py
changeset 875 a8952b79caec
parent 843 7e6fb43804a8
child 881 68ac754a5a72
--- a/Beremiz.py	Wed Oct 31 12:05:44 2012 +0100
+++ b/Beremiz.py	Sat Nov 03 17:00:26 2012 +0100
@@ -211,9 +211,16 @@
             if current_time - self.LastRefreshTime > REFRESH_PERIOD and self.RefreshLock.acquire(False):
                 self._should_write()
             else:
-                self.LastRefreshTimer = Timer(REFRESH_PERIOD, self._should_write)
+                self.LastRefreshTimer = Timer(REFRESH_PERIOD, self._timer_expired)
                 self.LastRefreshTimer.start()
 
+    def _timer_expired(self):
+        if self.RefreshLock.acquire(False):
+            self._should_write()
+        else:
+            self.LastRefreshTimer = Timer(REFRESH_PERIOD, self._timer_expired)
+            self.LastRefreshTimer.start()
+
     def _should_write(self):
         wx.CallAfter(self._write)
         if MainThread == currentThread().ident:
@@ -225,7 +232,7 @@
 
     def _write(self):
         if self.output :
-            self.output.Freeze(); 
+            self.output.Freeze()
             self.lock.acquire()
             for s, style in self.stack:
                 if style is None : style=self.black_white
@@ -247,7 +254,7 @@
             if newtime - self.rising_timer > 1:
                 self.risecall()
             self.rising_timer = newtime
-
+        
     def write_warning(self, s):
         self.write(s,self.red_white)