From 1b7c570e9a6a2f5bb79b54663063b3dfcf650e0c Mon Sep 17 00:00:00 2001 From: MKesenheimer Date: Thu, 6 Apr 2023 23:52:43 +0200 Subject: [PATCH] Display is now correctly updated with fixed fps. --- pwnagotchi/ui/view.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pwnagotchi/ui/view.py b/pwnagotchi/ui/view.py index 9ecc857f9..ba6ab036f 100644 --- a/pwnagotchi/ui/view.py +++ b/pwnagotchi/ui/view.py @@ -33,6 +33,7 @@ def __init__(self, config, impl, state=None): self._config = config self._canvas = None self._frozen = False + self._lasttime = time.time() self._lock = Lock() self._voice = Voice(lang=config['main']['lang']) self._implementation = impl @@ -360,6 +361,15 @@ def on_custom(self, text): self.set('status', self._voice.custom(text)) self.update() + def check_display_update(self): + now = time.time() + timedif = now - self._lasttime + delay = 1.0 / self._config['ui']['fps'] + if timedif < delay: + return False + self._lasttime = now + return True + def update(self, force=False, new_data={}): for key, val in new_data.items(): self.set(key, val) @@ -381,7 +391,8 @@ def update(self, force=False, new_data={}): web.update_frame(self._canvas) - for cb in self._render_cbs: - cb(self._canvas) + if self.check_display_update(): + for cb in self._render_cbs: + cb(self._canvas) self._state.reset()