def _on_view_rendered(self, img): web.update_frame(img) try: if self._config['ui']['display']['video']['on_frame'] != '': os.system(self._config['ui']['display']['video']['on_frame']) except Exception as e: logging.error("%s" % e) if self._enabled: self._canvas = (img if self._rotation == 0 else img.rotate(self._rotation)) if self._implementation is not None: self._canvas_next = self._canvas self._canvas_next_event.set()
def update(self, force=False, new_data={}, with_lock=True): for key, val in new_data.items(): self.set(key, val) maybe_lock = self._lock if with_lock else nullcontext() with maybe_lock: if self._frozen: return state = self._state changes = state.changes(ignore=self._ignore_changes) min_changes = 2 if self._config['ui']['fps'] == 0.0 else 0 if force or len(changes) > min_changes: logging.debug( "Update screen because %s", 'it was forced.' if force else f"{changes} triggered it.") self._canvas = Image.new('1', (self._width, self._height), WHITE) drawer = ImageDraw.Draw(self._canvas) plugins.on('ui_update', self) for key, lv in list(state.items()): lv.draw(self._canvas, drawer) if self._config['ui']['web']['dark']: print(self._canvas.mode) self._canvas = ImageOps.invert( self._canvas.convert('L')).convert('1') web.update_frame(self._canvas) for cb in self._render_cbs: cb(self._canvas) self._state.reset()