diff -r a69a5a72daa1 -r 8cab11dd2325 graphics/GraphicCommons.py --- a/graphics/GraphicCommons.py Wed Jun 10 13:18:42 2009 +0200 +++ b/graphics/GraphicCommons.py Wed Jun 10 13:58:52 2009 +0200 @@ -201,7 +201,7 @@ def Inhibit(self, inhibit): self.Inhibited = inhibit - if inhibit and self.LastValue is not None: + if not inhibit and self.LastValue is not None: self.SetValue(self.LastValue) self.LastValue = None @@ -225,17 +225,18 @@ def __init__(self, producer, debug, register_tick=True): self.DataProducer = producer self.Debug = debug + self.Inhibited = False self.DataConsumers = {} self.LastRefreshTime = gettime() + self.RefreshTimer = wx.Timer(self, -1) + self.Bind(wx.EVT_TIMER, self.OnRefreshTimer, self.RefreshTimer) + if register_tick and debug: self.DataProducer.SubscribeDebugIECVariable("__tick__", self) - self.RefreshTimer = wx.Timer(self, -1) - self.Bind(wx.EVT_TIMER, self.OnRefreshTimer, self.RefreshTimer) - def __del__(self): if self.Debug: self.DataProducer.UnsubscribeDebugIECVariable("__tick__", self) @@ -243,6 +244,7 @@ self.RefreshTimer.Stop() def Inhibit(self, inhibit): + self.Inhibited = inhibit for consumer, iec_path in self.DataConsumers.iteritems(): consumer.Inhibit(inhibit) @@ -267,12 +269,14 @@ event.Skip() def NewDataAvailable(self): - self.Inhibit(True) - current_time = gettime() - if current_time - self.LastRefreshTime > REFRESH_PERIOD: - self.LastRefreshTime = current_time - wx.CallAfter(self.RefreshViewOnNewData) - + self.RefreshTimer.Stop() + if not self.Inhibited: + current_time = gettime() + if current_time - self.LastRefreshTime > REFRESH_PERIOD: + self.LastRefreshTime = current_time + self.Inhibit(True) + wx.CallAfter(self.RefreshViewOnNewData) + def RefreshViewOnNewData(self): if self: self.RefreshNewData()