--- a/graphics/GraphicCommons.py Mon Nov 05 20:15:28 2012 +0100
+++ b/graphics/GraphicCommons.py Mon Nov 05 20:16:45 2012 +0100
@@ -308,6 +308,7 @@
self.LastRefreshTime = gettime()
self.HasAcquiredLock = False
+ self.TimerAccessLock = Lock() self.LastRefreshTimer = None
@@ -316,7 +317,8 @@
self.DeleteDataConsumers()
- self.RefreshTimer.Stop()
+ if self.LastRefreshTimer is not None: + self.LastRefreshTimer.Stop() def SetDataProducer(self, producer):
if self.RegisterTick and self.Debug:
@@ -374,13 +376,17 @@
self.AccessLock.release()
+ self.TimerAccessLock.acquire() self.LastRefreshTimer = Timer(REFRESH_PERIOD, self.ShouldRefresh)
self.LastRefreshTimer.start()
+ self.TimerAccessLock.release() def NewDataAvailable(self, *args, **kwargs):
+ self.TimerAccessLock.acquire() if self.LastRefreshTimer is not None:
self.LastRefreshTimer.cancel()
self.LastRefreshTimer=None
+ self.TimerAccessLock.release() if current_time - self.LastRefreshTime > REFRESH_PERIOD and DEBUG_REFRESH_LOCK.acquire(False):
@@ -390,12 +396,16 @@
self.LastRefreshTime = gettime()
wx.CallAfter(self.RefreshViewOnNewData, *args, **kwargs)
+ elif not self.IsShown() and self.HasAcquiredLock: + DebugViewer.RefreshNewData(self) def RefreshViewOnNewData(self, *args, **kwargs):
self.RefreshNewData(*args, **kwargs)
+ self.TimerAccessLock.acquire() self.LastRefreshTimer = Timer(REFRESH_PERIOD, self.ShouldRefresh)
self.LastRefreshTimer.start()
+ self.TimerAccessLock.release() def RefreshNewData(self, *args, **kwargs):