Skip to content
Snippets Groups Projects
Commit e64eb259 authored by Paul McCarthy's avatar Paul McCarthy
Browse files

If async idle loop re-queues a task (with after > 0) it doesn't

immediatelly re-run the idle loop.
parent c597ad19
No related branches found
No related tags found
No related merge requests found
...@@ -244,8 +244,9 @@ def _wxIdleLoop(ev): ...@@ -244,8 +244,9 @@ def _wxIdleLoop(ev):
_idleTimer.Start(_idleCallRate, wx.TIMER_ONE_SHOT) _idleTimer.Start(_idleCallRate, wx.TIMER_ONE_SHOT)
return return
now = time.time() now = time.time()
elapsed = now - task.schedtime elapsed = now - task.schedtime
queueSizeOffset = 0
# Has enouggh time elapsed # Has enouggh time elapsed
# since the task was scheduled? # since the task was scheduled?
...@@ -254,6 +255,7 @@ def _wxIdleLoop(ev): ...@@ -254,6 +255,7 @@ def _wxIdleLoop(ev):
log.debug('Re-queueing function ({}) on wx idle ' log.debug('Re-queueing function ({}) on wx idle '
'loop'.format(getattr(task.task, '__name__', '<unknown>'))) 'loop'.format(getattr(task.task, '__name__', '<unknown>')))
_idleQueue.put_nowait(task) _idleQueue.put_nowait(task)
queueSizeOffset = 1
# Has the task timed out? # Has the task timed out?
elif task.timeout == 0 or (elapsed < task.timeout): elif task.timeout == 0 or (elapsed < task.timeout):
...@@ -265,7 +267,7 @@ def _wxIdleLoop(ev): ...@@ -265,7 +267,7 @@ def _wxIdleLoop(ev):
if task.name is not None: if task.name is not None:
_idleQueueSet.discard(task.name) _idleQueueSet.discard(task.name)
if _idleQueue.qsize() > 0: if _idleQueue.qsize() > queueSizeOffset:
ev.RequestMore() ev.RequestMore()
else: else:
_idleTimer.Start(_idleCallRate, wx.TIMER_ONE_SHOT) _idleTimer.Start(_idleCallRate, wx.TIMER_ONE_SHOT)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment