Vala / SDL Callback для создания таймера - PullRequest
2 голосов
/ 16 октября 2011

Я хочу обновлять мой экран каждые 200 мс без добавления некоторого кода в цикле.

Итак, я хотел бы создать таймер с обратным вызовом в Vala с использованием SDL.

Я читаю документацию, но не понимаю, что ожидается в качестве второго параметра: http://www.valadoc.org/sdl/SDL.Timer.html

Следующий код компилируется без ошибок:

this.timer = new SDL.Timer( 200, () => { this.refresh(); return 0; } );

РЕДАКТИРОВАТЬ: вот полныйкод с SDL:

    public View( int width, int height, bool fullscreen, string window_name = "AKITA application" )
        {

            SDL.init( InitFlag.VIDEO | InitFlag.TIMER );

            this.last_tick = 0;
            this.fps = 25; // Set default value for FPS

            uint32 video_flags = SurfaceFlag.DOUBLEBUF | SurfaceFlag.HWACCEL | SurfaceFlag.HWSURFACE;

            this.screen = Screen.set_video_mode( width, height, 32, video_flags);

            if ( this.screen == null )
            {
                stderr.printf ("Could not set video mode.\n");
            }

            WindowManager.set_caption (window_name, "");

            this.timer = new SDL.Timer( 200, () => { this.refresh(); return 0; } );

        }

    public void refresh()
        {
            stdout.printf( "refresh...\n" );
        }

Но ничего не появляется (refresh() должен что-то написать на стандартный вывод).

Может ли кто-нибудь помочь мне с этим (или есть лучший способ сделать то, что я хочу)?

Спасибо,

Дэмиен

1 Ответ

5 голосов
/ 17 октября 2011

Вы должны запустить цикл обработки событий (например, цикл с SDL.Event.wait() или SDL.Event.poll()), иначе таймеры не сработают.

...