Revision: 6410
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6410&view=rev
Author:   mdboom
Date:     2008-11-17 15:20:06 +0000 (Mon, 17 Nov 2008)

Log Message:
-----------
Further memory leak fixes for Gtk

Modified Paths:
--------------
    trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py

Modified: trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py     2008-11-17 
14:49:15 UTC (rev 6409)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py     2008-11-17 
15:20:06 UTC (rev 6410)
@@ -156,7 +156,7 @@
         FigureCanvasBase.__init__(self, figure)
         gtk.DrawingArea.__init__(self)
 
-        self._idleID        = 0
+        self._idle_draw_id  = 0
         self._need_redraw   = True
         self._pixmap_width  = -1
         self._pixmap_height = -1
@@ -177,11 +177,13 @@
         self.set_flags(gtk.CAN_FOCUS)
         self._renderer_init()
 
-        self._idle_id = gobject.idle_add(self.idle_event)
+        self._idle_event_id = gobject.idle_add(self.idle_event)
 
     def destroy(self):
-        gtk.DrawingArea.destroy(self)
-        gobject.source_remove(self._idle_id)
+        #gtk.DrawingArea.destroy(self)
+        gobject.source_remove(self._idle_event_id)
+        if self._idle_draw_id != 0:
+            gobject.source_remove(self._idle_draw_id)
 
     def scroll_event(self, widget, event):
         if _debug: print 'FigureCanvasGTK.%s' % fn_name()
@@ -280,10 +282,10 @@
     def draw_idle(self):
         def idle_draw(*args):
             self.draw()
-            self._idleID = 0
+            self._idle_draw_id = 0
             return False
-        if self._idleID == 0:
-            self._idleID = gobject.idle_add(idle_draw)
+        if self._idle_draw_id == 0:
+            self._idle_draw_id = gobject.idle_add(idle_draw)
 
 
     def _renderer_init(self):
@@ -534,7 +536,7 @@
         self.win = window
         gtk.Toolbar.__init__(self)
         NavigationToolbar2.__init__(self, canvas)
-        self._idleId = 0
+        self._idle_draw_id = 0
 
         self.connect("destroy", self.destroy)
 
@@ -543,9 +545,11 @@
         self.fileselect.destroy()
         self.tooltips.destroy()
         self.canvas.destroy()
+        if self._idle_draw_id != 0:
+            gobject.remove_source(self._idle_draw_id)
 
     def set_message(self, s):
-        if self._idleId == 0:
+        if self._idle_draw_id == 0:
             self.message.set_label(s)
 
     def set_cursor(self, cursor):
@@ -587,16 +591,15 @@
             axrect = l,b,w,h
             self._imageBack = axrect, drawable.get_image(*axrect)
             drawable.draw_rectangle(gc, False, *rect)
-            self._idleId = 0
+            self._idle_draw_id = 0
         else:
             def idle_draw(*args):
-
                 drawable.draw_image(gc, imageBack, 0, 0, *lastrect)
                 drawable.draw_rectangle(gc, False, *rect)
-                self._idleId = 0
+                self._idle_draw_id = 0
                 return False
-            if self._idleId == 0:
-                self._idleId = gobject.idle_add(idle_draw)
+            if self._idle_draw_id == 0:
+                self._idle_draw_id = gobject.idle_add(idle_draw)
 
 
     def _init_toolbar(self):


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to