# HG changeset patch # User Jeremy Thurgood # Date 1378574907 -7200 # Node ID a98ae2bc4957d33a58df1fd434398ee573f02627 # Parent 2cdfbc483d57d23277d1e8e0dcd412a06fcbd63a Fix slow rendering. \o/ diff -r 2cdfbc483d57 -r a98ae2bc4957 nagslang/screens/area.py --- a/nagslang/screens/area.py Sat Sep 07 19:22:15 2013 +0200 +++ b/nagslang/screens/area.py Sat Sep 07 19:28:27 2013 +0200 @@ -92,6 +92,8 @@ self.add_game_objects() self.save_progress() sound.play_music("POL-cyber-factory-short.ogg") + self._background = None + self._surface = None def teardown(self): sound.stop() @@ -230,17 +232,19 @@ def render(self, surface): if self._disable_render: return - background = self._level.get_background() - render_rect = self._calc_viewport(background, surface) - #mysurface = background.copy() - mysurface = pygame.surface.Surface(background.get_size()) - mysurface.set_clip(render_rect) - mysurface.blit(background, render_rect.topleft, render_rect) + if self._background is None: + bg = self._level.get_background() + self._background = pygame.surface.Surface(bg.get_size()) + self._background.blit(bg, (0, 0)) + self._surface = pygame.surface.Surface(self._background.get_size()) + render_rect = self._calc_viewport(self._surface, surface) + self._surface.set_clip(render_rect) + self._surface.blit(self._background, render_rect.topleft, render_rect) for drawable in self._drawables: - drawable.render(mysurface) - surface.blit(mysurface, (0, 0), render_rect) + drawable.render(self._surface) + surface.blit(self._surface, (0, 0), render_rect) # Maximum width we allow for overlays - max_width = min(render_rect.width, mysurface.get_width()) + max_width = min(render_rect.width, self._surface.get_width()) for overlay in self._level.overlay_drawables: if overlay.is_visible(): overlay.render(surface, render_rect.topleft, max_width)