diff options
author | Walter Bender <walter.bender@gmail.com> | 2012-12-23 00:18:03 (GMT) |
---|---|---|
committer | Walter Bender <walter.bender@gmail.com> | 2012-12-23 00:18:03 (GMT) |
commit | c3b81450372cff7b7bd5649ea4f2cbfe0df70c7f (patch) | |
tree | d5cdf690043c759f3e6cad13a055374e11e5eca2 /TurtleArt | |
parent | b838f94e26e62e14cc9ab112d33183ffb99d307b (diff) |
reuse pango layout to prevent memory leak
Diffstat (limited to 'TurtleArt')
-rw-r--r-- | TurtleArt/sprites.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/TurtleArt/sprites.py b/TurtleArt/sprites.py index f85458d..844e171 100644 --- a/TurtleArt/sprites.py +++ b/TurtleArt/sprites.py @@ -354,6 +354,7 @@ class Sprite: self.rect.width, self.rect.height) cr.fill() + if len(self.labels) > 0: self.draw_label(cr) @@ -385,7 +386,11 @@ class Sprite: my_width = 0 my_height = self.rect.height - self._margins[1] - self._margins[3] for i in range(len(self.labels)): - pl = cr.create_layout() + if hasattr(self, 'pl'): # Reuse the pango layout + pl = self.pl + else: + self.pl = cr.create_layout() + pl = self.pl pl.set_text(str(self.labels[i])) self._fd.set_size(int(self._scale[i] * pango.SCALE)) pl.set_font_description(self._fd) @@ -422,6 +427,7 @@ class Sprite: y = int(self.rect.y + self._margins[1]) else: # bottom y = int(self.rect.y + self.rect.height - h - self._margins[3]) + cr.save() cr.translate(x, y) cr.set_source_rgb(self._color[0], self._color[1], self._color[2]) |