From 18f4a4bb19a0a76131f17fe51590c58a731538a1 Mon Sep 17 00:00:00 2001 From: Simon Cross Date: Sat, 10 Sep 2016 18:42:22 +0200 Subject: [PATCH] Cache infobar more aggressively. Rrrr. --- tabakrolletjie/infobar.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/tabakrolletjie/infobar.py b/tabakrolletjie/infobar.py index f468ef6..5a4d3cc 100644 --- a/tabakrolletjie/infobar.py +++ b/tabakrolletjie/infobar.py @@ -29,21 +29,29 @@ class InfoBar(object): "power usage {scene.power_usage}" ]) self._font = loader.load_font(FONTS['sans'], size=20) + self._text = None + self._infobar = None def render(self, surface): + if self._infobar is None: + self._update_infobar() surface.blit(self._infobar, self.pos, None) - def update(self, gamestate): - options = { - "gamestate": gamestate, "battery": self.battery, - "scene": self.scene, "time_of_day": self.time_of_day, - } - text = self.template.format(**options) - text_img = self._font.render(text, True, self.color) - + def _update_infobar(self): + text_img = self._font.render(self._text, True, self.color) width = text_img.get_width() + 10 height = text_img.get_height() + 10 self._infobar = pygame.surface.Surface( (width, height), pgl.SWSURFACE).convert_alpha() self._infobar.fill((0, 0, 0, 64)) self._infobar.blit(text_img, (5, 3), None) + + def update(self, gamestate): + options = { + "gamestate": gamestate, "battery": self.battery, + "scene": self.scene, "time_of_day": self.time_of_day, + } + text = self.template.format(**options) + if text != self._text: + self._text = text + self._infobar = None -- 2.34.1