Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 07f8eeb

Browse files
committed
Further memory leak fixes for Gtk
svn path=/trunk/matplotlib/; revision=6410
1 parent e6f5111 commit 07f8eeb

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

lib/matplotlib/backends/backend_gtk.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ def __init__(self, figure):
156156
FigureCanvasBase.__init__(self, figure)
157157
gtk.DrawingArea.__init__(self)
158158

159-
self._idleID = 0
159+
self._idle_draw_id = 0
160160
self._need_redraw = True
161161
self._pixmap_width = -1
162162
self._pixmap_height = -1
@@ -177,11 +177,13 @@ def __init__(self, figure):
177177
self.set_flags(gtk.CAN_FOCUS)
178178
self._renderer_init()
179179

180-
self._idle_id = gobject.idle_add(self.idle_event)
180+
self._idle_event_id = gobject.idle_add(self.idle_event)
181181

182182
def destroy(self):
183-
gtk.DrawingArea.destroy(self)
184-
gobject.source_remove(self._idle_id)
183+
#gtk.DrawingArea.destroy(self)
184+
gobject.source_remove(self._idle_event_id)
185+
if self._idle_draw_id != 0:
186+
gobject.source_remove(self._idle_draw_id)
185187

186188
def scroll_event(self, widget, event):
187189
if _debug: print 'FigureCanvasGTK.%s' % fn_name()
@@ -280,10 +282,10 @@ def draw(self):
280282
def draw_idle(self):
281283
def idle_draw(*args):
282284
self.draw()
283-
self._idleID = 0
285+
self._idle_draw_id = 0
284286
return False
285-
if self._idleID == 0:
286-
self._idleID = gobject.idle_add(idle_draw)
287+
if self._idle_draw_id == 0:
288+
self._idle_draw_id = gobject.idle_add(idle_draw)
287289

288290

289291
def _renderer_init(self):
@@ -534,7 +536,7 @@ def __init__(self, canvas, window):
534536
self.win = window
535537
gtk.Toolbar.__init__(self)
536538
NavigationToolbar2.__init__(self, canvas)
537-
self._idleId = 0
539+
self._idle_draw_id = 0
538540

539541
self.connect("destroy", self.destroy)
540542

@@ -543,9 +545,11 @@ def destroy(self, *args):
543545
self.fileselect.destroy()
544546
self.tooltips.destroy()
545547
self.canvas.destroy()
548+
if self._idle_draw_id != 0:
549+
gobject.remove_source(self._idle_draw_id)
546550

547551
def set_message(self, s):
548-
if self._idleId == 0:
552+
if self._idle_draw_id == 0:
549553
self.message.set_label(s)
550554

551555
def set_cursor(self, cursor):
@@ -587,16 +591,15 @@ def draw_rubberband(self, event, x0, y0, x1, y1):
587591
axrect = l,b,w,h
588592
self._imageBack = axrect, drawable.get_image(*axrect)
589593
drawable.draw_rectangle(gc, False, *rect)
590-
self._idleId = 0
594+
self._idle_draw_id = 0
591595
else:
592596
def idle_draw(*args):
593-
594597
drawable.draw_image(gc, imageBack, 0, 0, *lastrect)
595598
drawable.draw_rectangle(gc, False, *rect)
596-
self._idleId = 0
599+
self._idle_draw_id = 0
597600
return False
598-
if self._idleId == 0:
599-
self._idleId = gobject.idle_add(idle_draw)
601+
if self._idle_draw_id == 0:
602+
self._idle_draw_id = gobject.idle_add(idle_draw)
600603

601604

602605
def _init_toolbar(self):

0 commit comments

Comments
 (0)