From 9745b23607d65e14983f1b43419814ed76435226 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 2 Dec 2016 18:10:04 +0530 Subject: [PATCH] Allow re-adding of a timer while the timer is being executed --- kitty/timers.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/kitty/timers.py b/kitty/timers.py index 8f3e7b632..050a18bd9 100644 --- a/kitty/timers.py +++ b/kitty/timers.py @@ -45,16 +45,13 @@ class Timers: def __call__(self): if self.timers: now = monotonic() - for i, ev in enumerate(self.timers): - if ev[0] <= now: + expired_timers, waiting_timers = [], [] + for ev in self.timers: + (expired_timers if ev[0] <= now else waiting_timers).append(ev) + self.timers = waiting_timers + for ev in expired_timers: try: ev.callback(*ev.args) except Exception: import traceback traceback.print_exc() - else: - break - else: - del self.timers[:] - return - del self.timers[:i]