On Tue, Jun 22, 2010 at 3:45 AM, Matthias Michler <MatthiasMichler@gmx.net> wrote:
On Tuesday, June 22, 2010 10:03:06 am Eric Firing wrote:
> On 06/21/2010 09:28 PM, Matthias Michler wrote:
> > On Monday, June 21, 2010 06:30:04 pm Eric Firing wrote:
> >> On 06/21/2010 06:10 AM, Matthias Michler wrote:
> >>> Hello list,
> >>>
> >>> I'm encountering a strange problem with the RectangleSelector using the
> >>> latest version of svn. Namely it doesn't work if it wasn't initialized
> >>> as RS = RectangleSelector(...)
> >>> but using
> >>> RectangleSelector(...)
> >>> in my script.
> >>>
> >>> I modified the example rectangle_selector.py from the folder
> >>> examples/widgets to illustrate my observation.
> >>>
> >>> Can anybody reproduce my findings or even explain what is going on?
> >>
> >> If you don't keep a reference to the RectangleSelector object, it
> >> vanishes--it is garbage-collected.
> >>
> >> Eric
> >
> > Hi Eric,
> >
> > thanks for your reply. That sounds reasonable, but I'm still confused.
> > With the matplotlib release the RectangleSelector works with
> > and without a reference to it. Was this old behavior somehow unintended?

Hi Eric,

> I don't know.  In both cases, are you trying it in a script, and running
> it outside ipython?  Ipython keeps references to inputs and outputs.

yes I'm just using

python rectangle_selector.py

with the slightly modified script I have sent last time for matplotlib-svn and
additionally comment out the 'button' - keyword argument for the release The only difference between the two runs is whether matplotlib-svn is
found in the PYTHONPATH or not.

> There haven't been many changes to widgets.py, and I don't see anything
> that could account for the difference I also don't see what could keep
> it alive if you don't keep a reference to it.
> If the same externally-run script works differently in this respect
> between the two mpl versions, then I'm baffled.

I'm baffled, too. That was what made starting this thread and hope for an
explanation, what I'm doing wrong.

Kind regards,

I could have sworn that there was a bug fix a month or two ago dealing with what appeared to be a memory leak of some sort.  It seemed that some stuff was not getting garbage-collected because they weren't completely dereferenced.  I seem to recall that it had something to do with various backend action callbacks not being dis-connected when finished (or the action was being connected too many times).

Maybe that might explain the difference in behavior (that is, that the old behavior was a "bug" not a "feature")?

Ben Root