diff -r 781ced3c0aef -r 68ac754a5a72 Beremiz.py --- 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)