On Tue, Apr 8, 2008 at 1:23 PM, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
>
>  At the moment, ClockDisplay objects schedule themselves on the default
>  clock in their initializers, but provide no facility for unscheduling.
>  This means that ClockDisplay objects hang around forever, even after
>  they've gone out of scope. This behaviour is mentioned nowhere in the
>  documentation, and can cause huge slowdown if ClockDisplay objects are
>  being regularly created.

This is actually a memory leak in your code, not pyglet.  You should
make the clockDisplay a global singleton - rather than recreating
instances.

>  Obviously, one can work around this by calling
>  cd.clock.unschedule(cd.update_text) when the ClockDisplay is no longer
>  required, but this seems hacky.

That's not a work around ... sounds like the right way to do it.  The
only point of confusion might be that the scheduling is implicit - but
when would you want to create a ClockDisplay and not schedule it?
Unscheduling it also wouldn't buy you much performace.

>  A __del__ method seems like the
>  obvious way of solving things ...

Not exactly ... that would cause people to believe del would actually
get called by the gc.  But when the gc calls __del__ is very
non-deterministic - and won't occur if a method on the object is
scheduled, of course.   Try playing with the following code, for
example, and you find some interesting results:


a.py
------
class O(object):
    def __del__(self):
        print 'deleting'
o = O()

b.py
-----
from testns1 import o
del o

>  but unfortunately the clock keeps a
>  reference to the scheduled method, so this doesn't work. Anyone have
>  any ideas for a better solution?

Summarzing:

1. Create one and only one instance of ClockDisplay.
2. Schedule/Unschedule explicitly with helper functions (or otherwise)
if you really want to do such


-- 
\\\\\/\"/\\\\\\\\\\\
\\\\/ // //\/\\\\\\\
\\\/ \\// /\ \/\\\\
\\/ /\/ / /\/ /\ \\\
\/ / /\/ /\ /\\\ \\
/ /\\\ /\\\ \\\\\/\
\/\\\\\/\\\\\/\\\\\\
 d.p.s

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/pyglet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to