Ejemplo n.º 1
0
    def _base(self, framerate=None, use_accurate_delay=False):
        if framerate:
            endtime = int((1.0 / framerate) * 1000.)
            self._rawpassed = sdl.SDL_GetTicks() - self._last_tick
            delay = endtime - self._rawpassed

            _try_init()

            if use_accurate_delay:
                delay = _accurate_delay(delay)
            else:
                delay = max(delay, 0)
                sdl.SDL_Delay(delay)

        nowtime = sdl.SDL_GetTicks()
        self._timepassed = nowtime - self._last_tick
        self._fps_count += 1
        self._last_tick = nowtime
        if not framerate:
            self._rawpassed = self._timepassed

        if not self._fps_tick:
            self._fps_count = 0
            self._fps_tick = nowtime
        elif self._fps_count >= 10:
            try:
                self._fps = (self._fps_count /
                             ((nowtime - self._fps_tick) / 1000.0))
            except ZeroDivisionError:
                self._fps = float('inf')
            self._fps_count = 0
            self._fps_tick = nowtime

        return self._timepassed
Ejemplo n.º 2
0
def _accurate_delay(ticks):
    if ticks <= 0:
        return 0

    start = sdl.SDL_GetTicks()
    if ticks >= WORST_CLOCK_ACCURACY:
        delay = (ticks - 2) - (ticks % WORST_CLOCK_ACCURACY)
        if delay >= WORST_CLOCK_ACCURACY:
            sdl.SDL_Delay(delay)

    # hog CPU for a bit to get the delay just right
    delay = ticks - (sdl.SDL_GetTicks() - start)
    while delay > 0:
        delay = ticks - (sdl.SDL_GetTicks() - start)

    return sdl.SDL_GetTicks() - start
Ejemplo n.º 3
0
def wait(milliseconds):
    """ wait(milliseconds) -> time
    pause the program for an amount of time
    """
    try:
        milliseconds = int(milliseconds)
    except (ValueError, TypeError):
        raise TypeError("wait requires one integer argument")

    _try_init()

    milliseconds = max(milliseconds, 0)

    start = sdl.SDL_GetTicks()
    sdl.SDL_Delay(milliseconds)
    return sdl.SDL_GetTicks() - start