GNOME Bugzilla – Bug 133681
memory leak in gdk.drawable.get_image
Last modified: 2008-07-16 10:13:25 UTC
A user of matplotlib reported a memory leak in a pygtk application. I tracked it down to a call to memory leak in gdk.drawable.get_image. Not knowing too much about pygtk codegen, it appears that this bug is similar to bug 129754. By adding (caller-owns-return #t) to (define-method get_image (of-object "GdkDrawable") in gdk.defs, the memory leak disappears. (define-method get_image (of-object "GdkDrawable") (c-name "gdk_drawable_get_image") (return-type "GdkImage*") (parameters '("gint" "x") '("gint" "y") '("gint" "width") '("gint" "height") ) (caller-owns-return #t) ) Here is a pygtk script that exposes the bug import pygtk pygtk.require('2.0') import gtk def expose_event(widget, event): def repeat(*args): print 'drawing', repeat.cnt repeat.cnt += 1 imgBack = widget.window.get_image(10, 10, 50, 50) return gtk.TRUE repeat.cnt = 0 gtk.timeout_add(20, repeat) return gtk.TRUE win = gtk.Window() win.show() win.connect('delete_event', gtk.mainquit) da = gtk.DrawingArea() da.show() da.set_size_request(300,300) da.connect('expose_event', expose_event) win.add(da) gtk.mainloop()
Committed your suggested fix. Thanks! :-)