--- a/plugger.py Wed Jan 25 01:23:44 2012 +0100
+++ b/plugger.py Mon Jan 30 02:19:03 2012 +0100
@@ -775,6 +775,7 @@
# Setup debug information
+ self.IECdebug_display_lock = Semaphore(1) self.IECdebug_lock = Lock()
@@ -1772,6 +1773,13 @@
+ def DebugDispatch(self, TracedDebugVars, debug_tick): + for IECPath,value in TracedDebugVars: + self.CallWeakcallables(IECPath, "NewValue", debug_tick, value) + self.CallWeakcallables("__tick__", "NewDataAvailable") + self.IECdebug_display_lock.release() def DebugThreadProc(self):
This thread waid PLC debug data, and dispatch them to subscribers
@@ -1789,10 +1797,8 @@
wx.CallAfter(self.logger.write,
_("... debugger recovered\n"))
- for IECPath,value in zip(self.TracedIECPath, debug_vars):
- self.CallWeakcallables(IECPath, "NewValue", debug_tick, value)
- self.CallWeakcallables("__tick__", "NewDataAvailable")
+ if self.IECdebug_display_lock.acquire(False): + wx.CallAfter(self.DebugDispatch, zip(self.TracedIECPath, debug_vars), debug_tick) self.IECdebug_lock.release()
if debug_getvar_retry == DEBUG_RETRIES_WARN:
wx.CallAfter(self.logger.write,