diff --git a/fsl/utils/async.py b/fsl/utils/async.py index dd44bb2b4e0052847ccd2fae29f6ec2dee4afb6c..01ea1778a822e1ccf5f924b2260ab9e4ac380891 100644 --- a/fsl/utils/async.py +++ b/fsl/utils/async.py @@ -244,8 +244,9 @@ def _wxIdleLoop(ev): _idleTimer.Start(_idleCallRate, wx.TIMER_ONE_SHOT) return - now = time.time() - elapsed = now - task.schedtime + now = time.time() + elapsed = now - task.schedtime + queueSizeOffset = 0 # Has enouggh time elapsed # since the task was scheduled? @@ -254,6 +255,7 @@ def _wxIdleLoop(ev): log.debug('Re-queueing function ({}) on wx idle ' 'loop'.format(getattr(task.task, '__name__', '<unknown>'))) _idleQueue.put_nowait(task) + queueSizeOffset = 1 # Has the task timed out? elif task.timeout == 0 or (elapsed < task.timeout): @@ -265,7 +267,7 @@ def _wxIdleLoop(ev): if task.name is not None: _idleQueueSet.discard(task.name) - if _idleQueue.qsize() > 0: + if _idleQueue.qsize() > queueSizeOffset: ev.RequestMore() else: _idleTimer.Start(_idleCallRate, wx.TIMER_ONE_SHOT)