On Monday, June 30, 2014 12:21:07 PM UTC-5, Edward K. Ream wrote: > > On Mon, Jun 30, 2014 at 11:48 AM, 'Terry Brown' via leo-editor > <leo-editor@googlegroups.com> wrote: > > > But even if the idle time was respected, are there really separate idle > > times for each registered hook? Or just the first to init. idle time > > events (which I think is in core) gets to specify the time? > > > > I'm not sure the arg. makes sense, unless the idle time hook firing > > code's more sneaky than I think it is. >
A recent rev revises idle-time handling as follows: 1. qtGui.setIdleTimeHook now uses a timer with a zero time count, which should guarantee that it fires only at idle time:: def setIdleTimeHook (self,handler): '''Queue up idle-time processing.''' # Always define the callback so handler may be rebound. << define timerCallBack >> if not self.timer: self.timer = QtCore.QTimer() self.timer.timeout.connect(timerCallBack) # Fire the timer at idle time. self.timer.start(0) 2. The timerCallback function guarantees that the idle-time callback (that is, g.idleTimeHookHandler), never gets called more than once every g.app.idleTimeDelay msec. This is important: it means that Leo won't be overwhelmed with idle-time processing. Here is the code.:: def timerCallBack(): ''' The idle time callback. Call handler, but never more than once every g.app.idleTimeDelay msec. ''' if g.app.idleTimeHook: # Idle-time processing is enabled. t = time.time() delta = t - self.last_timer_callback_time delay = float(g.app.idleTimeDelay)/1000.0 if delta > delay: self.last_timer_callback_time = t # g.trace(delay,delta) handler() # usually g.idleTimeHookHanlder. elif self.timer: # Idle-time processing is disabled. Stop the timer. self.timer.stop() As a result, the following script now toggles idle-time processing properly, although to see it you should enable the g.trace(delay,delta) in the callback:: if g.app.idleTimeHook: g.disableIdleTimeHook() else: g.enableIdleTimeHook() I think this resolves the original issues. It seems to me, though, that g.enableIdleTimeHook should take *two* arguments, instead of just the idleTimeDelay=500 argument as at present. The second would be an override of g.idleTimeHookHanlder. For compatibility, this should be the second keyword arg. Unless I hear objections, I'll add this next. Edward -- You received this message because you are subscribed to the Google Groups "leo-editor" group. To unsubscribe from this group and stop receiving emails from it, send an email to leo-editor+unsubscr...@googlegroups.com. To post to this group, send email to leo-editor@googlegroups.com. Visit this group at http://groups.google.com/group/leo-editor. For more options, visit https://groups.google.com/d/optout.