Hi folks,

I'm continuing to work with Pyglet, and I'm getting results, but also 
problems.  Here is a simple application which I developed first on my 
Ubuntu Linux 13.04 system, 64-bit version, AMD CPU, running Python 3.3.2 
and pyglet 1.2alpha1.  This is a "hello world" program, with Earth as a 
bouncing ball in the background.

===================================================================

import pyglet
from random import uniform, choice

def random_velocity():
    return [choice((-1,1)) * uniform(0.25,0.75) for x in range(2)]

class MyWindow(pyglet.window.Window):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.label = pyglet.text.Label(
            'Hello, crazy world!',
            font_name='Times New Roman',
            font_size=40,
            x = self.width//2, y = self.height//3,
            anchor_x='center', anchor_y='center')
        img = pyglet.resource.image('Earth 99x99.png')
        self.sprite = pyglet.sprite.Sprite(
            img, 
            x = (self.width - img.width)//2, 
            y = 2*self.height//3 - img.height//2)
        self.sprite.vx, self.sprite.vy = random_velocity()
        # Bounce boundaries
        self.left = 5
        self.right = self.width - img.width - 5
        self.bottom = 5
        self.top = self.height - img.height - 5
        # Animation clock
        pyglet.clock.schedule_interval(self.update, 1 / 60.0)

    def on_draw(self):
        self.clear()
        self.sprite.draw()
        self.label.draw()
        
    def update(self, dt):
        sp = self.sprite
        sp.x += sp.vx
        sp.y += sp.vy
        if sp.x < self.left or sp.x > self.right:
            sp.vx = -sp.vx
        if sp.y < self.bottom or sp.y > self.top:
            sp.vy = -sp.vy
        sp.draw()

MyWindow()
pyglet.app.run()


===================================================================

It runs for a while, but then it hangs.  The bouncing-ball Earth simply 
stops moving.  Attempting to use the mouse to close the Pyglet window 
fails.  The only way that I have found to close the window is to kill the 
Python interpreter which is running it.  CPU loading is light while the 
animation is running, but drops to zero once the animation stops.  It is as 
if the Pyglet clock that I defined simply stopped ticking.

I added some timing features to the program (not shown) and ran it about a 
dozen times.  The program never crashed in less than 33 seconds, no matter 
what else I was doing with the computer while it ran (switching to my IDE, 
reading my web browser, etc.).  Quite a few crashes occurred quite close to 
that 33-second mark.  The longest I got the program to run without crashing 
was 229 seconds.  And while I can't be sure of this, in a few instances it 
appeared that the crashes were correlated with a mouse event.  It looked 
like the animation stopped right as I clicked into, or away from, my Pyglet 
application window.

Out of curiosity, I tried my application on my Windows Vista virtual 
machine, running under VirtualBox.  It's only the 32-bit version of Vista, 
but I am still using Python 3.3.2 and pyglet1.2alpha1.  My program didn't 
crash -- good!  But it ran sluggishly, probably because I was generating a 
huge and repeating list of OpenGL warnings.  A quick Internet search 
revealed that VirtualBox has some OpenGL bugs that are being fixed.  This 
suggested two things to me: 1) that Pyglet programs may have different 
behaviors on different operating systems, and 2) that a VirtualBox might 
not be the best place to investigate these problems.

So then I tried a Windows 7 system running directly on the hardware, not in 
a virtual machine.  I'm back to a 64-bit version of the OS here.  But as 
before, I have not changed any of the other variables.  I stuck with Python 
3.3.2 and pyglet1.2alpha1.  My program didn't crash.  I got no OpenGL 
warning messages.  Everything ran flawlessly for multiple runs, exceeding 
10 minutes each.

So, I can't be certain that my program reveals a problem with Pyglet 
itself.  It may have something to do with something on which Pyglet depends 
-- for example, the implementations of OpenGL on my various systems.  How 
would I know?  Is there anything that I can address or repair?  Any advice 
is appreciated.  Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pyglet-users.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to