Титла: проблемация с timer-ите в sdl
Публикувано от: dilyan_rusev в Apr 06, 2007, 14:41
Ами няма какво толкова да се говори. Кодът е достатъчно красноречив, както и изходът на програмата: Примерен код | Uint32 testCallback(Uint32 interval, void *param); .... SDL_TimerID id = SDL_AddTimer(1000, testCallback, NULL); SDL_Event e; bool done = false; while (!done) { while(SDL_PollEvent(&e)) { switch (e.type) { case SDL_KEYDOWN: if (e.key.keysym.sym == SDLK_ESCAPE) done = true; break; } } } SDL_RemoveTimer(id); ... Uint32 testCallback(Uint32 interval, void *param) { static int counter = 0; printf("Test timer callback\nInterval:\t%d\nTimes called:\t%i\n", interval, counter); counter++; } |
И сега идва голямата ебавка... изходът от програмата: htp://store3.data.bg/bloodrager/gluposti/blaaa
Това, което ме убива, е, че започва с 1000 и после какво и защо - не мога да разбера. Уж давам SDL_INIT_TIMER... не мога да разбера защо се получава така...
редакция: ааа яко съм тъп........ та начи за тези, които също като мене биха забравили: всеки callback трябва да връща новия интервал (или по-точно този, който иска). демек за да работи както трябва (да се извиква на всяка секунда) трябва да стане следното:
Примерен код | Uint32 testCallback(Uint32 interval, void *param) { static int counter = 0; printf("Test timer callback\nInterval:\t%d\nTimes called:\t%i\n", interval, counter); counter++; /* !!!!!!!!!!!!!!!!!!!!!!!!! */ return interval; /* !!!!!!!!!!!!!!!!!!!!!!!!! */ } |
|