On 8/30/08, Andrius Mitkus <[EMAIL PROTECTED]> wrote:
>
> Clock reports wrong fps when EventLoop.idle() is overridden
>
> Hello,
>
> I tried fixing my frame rate by overriding EventLoop.idle() method and
> dispatching on_draw only in scheduled actions, however ClockDisplay is
> now showing nonsense. It behaves as if every clock.tick() is followed
> by on_draw event, but this isn't true anymore, so displayed fps is
> higher than real fps. This program reproduces bug (if it's not a
> feature):
>
> #!/usr/bin/python
> import pyglet
>
> window = pyglet.window.Window(vsync = False)
> event_loop = pyglet.app.EventLoop()
> fps_display = pyglet.clock.ClockDisplay()
>
> @window.event
> def on_draw():
> window.clear()
> fps_display.draw()
>
> def update(dt):
> if not window.has_exit:
> window.dispatch_event('on_draw')
> window.flip()
>
> def idle():
> pyglet.clock.tick(True)
> return pyglet.clock.get_sleep_time(True)
>
> pyglet.clock.schedule_interval(update, 1.0 / 30.0)
> event_loop.idle = idle
> event_loop.run()
>
> It looks like problem is in clock.tick() method, it pushes new delta
> time into sliding window every time it's called. I haven't tested SVN
> version, but after quick look into repository I was unable to spot any
> significant changes in there. Am I doing something wrong, or is it
> really a bug?
This is indeed a "feature". The clock FPS measurement is just
convenience, and does assume that the window is redrawn every "tick".
If it were to actually reflect what goes on with on_draw, it would
have to be per-window anyway.
I have no great desire to change this, although if you think there's
documentation that needs clarifying I'd be happy to consider that.
Alex.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---