Here is a tested quilt patch to be stored in debian/patches/1000-icon-mem-leak.patch.
I could not verify that all leaks are plugged, as the program is still increasing in size while playing, and I do not know if this is normal or not. But the code in question make sense and is from upstream, so it should at least reduce the amount of memory used. :) I tested with the patch in place, and the game is working as it should. I was not able to trigger the slowdown, but do not know if I played long enough. :) -- Happy hacking Petter Reinholdtsen
Description: Fix small `get_res_icon_path()` widget leak `horizons.gui.util.get_res_icon_path()` does the same thing as as `horizons.gui.widgets.imagebuton`: aks fife to create an `Icon()` to see if it's a valid image path. But other than the `ImageButton`, `get_res_icon_path()` did forget to call `hide()` on that `Icon`. So the `Icon` stayed alive, even though unused. We now call `hide()` on that `Icon`. Origin: https://github.com/unknown-horizons/unknown-horizons/commit/25e933202e2db6083d0f163d978559c4ac24fb94 Author: MasterofJOKers <jo...@someserver.de> Bug-Debian: https://bugs.debian.org/871037 diff --git a/horizons/gui/util.py b/horizons/gui/util.py index a7c13584b..2fb2796b3 100644 --- a/horizons/gui/util.py +++ b/horizons/gui/util.py @@ -125,7 +125,7 @@ def get_res_icon_path(res, size=32, greyscale=False, full_path=True): icon_path = icon_path + '{res:03d}.png'.format(res=res) try: - Icon(image=icon_path) + Icon(image=icon_path).hide() except fife.NotFound: # ImageManager: image not found, use placeholder or die if res == 'placeholder': raise Exception('Image not found: {icon_path}'.format(icon_path=icon_path))