diff options
author | Florent Le Coz <louiz@louiz.org> | 2014-08-01 01:22:59 +0200 |
---|---|---|
committer | Florent Le Coz <louiz@louiz.org> | 2014-08-01 01:22:59 +0200 |
commit | 87cf38995a283e4a476fd124fcc55e0f80edf1ad (patch) | |
tree | 54e434be6a56ae5d501d4c2e769dd7ca1cbb4009 /src/core | |
parent | 55daf9d49df4a0e0774b27acd33735abf80f80dd (diff) | |
download | poezio-87cf38995a283e4a476fd124fcc55e0f80edf1ad.tar.gz poezio-87cf38995a283e4a476fd124fcc55e0f80edf1ad.tar.bz2 poezio-87cf38995a283e4a476fd124fcc55e0f80edf1ad.tar.xz poezio-87cf38995a283e4a476fd124fcc55e0f80edf1ad.zip |
Make the TimedEvents work with asyncio
Improvements: events now occur precisely at the specified date. You don’t
need to stop touching your keyboard to execute them.
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/core.py | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/src/core/core.py b/src/core/core.py index 446cc9f0..b2951aea 100644 --- a/src/core/core.py +++ b/src/core/core.py @@ -262,8 +262,6 @@ class Core(object): self.initial_joins = [] - self.timed_events = set() - self.connected_events = {} self.pending_invites = {} @@ -749,22 +747,13 @@ class Core(object): def remove_timed_event(self, event): """Remove an existing timed event""" - if event and event in self.timed_events: - self.timed_events.remove(event) + event.handler.cancel() def add_timed_event(self, event): """Add a new timed event""" - self.timed_events.add(event) - - def check_timed_events(self): - """Check for the execution of timed events""" - now = datetime.now() - for event in self.timed_events: - if event.has_timed_out(now): - res = event() - if not res: - self.timed_events.remove(event) - break + event.handler = asyncio.get_event_loop().call_later(event.delay, + event.callback, + *event.args) ####################### XMPP-related actions ################################## @@ -1628,9 +1617,6 @@ class Core(object): a non-None value), but we check for timed events instead. """ res = self.keyboard.get_user_input(self.stdscr) - while res is None: - self.check_timed_events() - res = self.keyboard.get_user_input(self.stdscr) return res def escape_next_key(self): |