PDA

View Full Version : how to stop timerfunc?



01-12-2005, 02:52 AM
hei, everybody, I want to know how to stop the timerfunc from running? I can stop idlefunc easily, but I am not sure about the timerfunc.

dvm
01-12-2005, 04:33 AM
You mean in glut? Try to be more specific, as to which api are you using. If glut it is, can't you pass a NULL pointer to the timerfunc callback? Also I think that the timer only runs once, so you'd have to reset it every time. e.g. if you wanted something to happen every 1 second:

void timer()
{
//do something
glutTimerFunc(timer, 1000);
}If the last line isn't used the timer will only run for one time.

01-12-2005, 09:43 AM
Ohh, I am sorry for that. Ya, it is glut anyway. But how if I want to run the timer, say for 5 times only? For glutidlefunc, I can stop by just passing NULL parameter to it, but it does not work the same when I attempt in gluttimerfunc.

01-12-2005, 12:55 PM
Hi!, my two solutions are:

Solution 1: If you don't use the argument of `void timer(int)':



#define ITERATIONS 5
#define TIME_INTERVAL 1000

void timer(int argument)
{
// Do something here.
if (argument > 0)
glutTimerFunc(TIME_INTERVAL, timer, argument - 1);
}

void init()
{ glutTimerFunc(TIME_INTERVAL, timer, ITERATIONS); }Solution 2: if you need the argument of `void timer(int)':


// A global variable
int iterations = 5;
#define TIME_INTERVAL 1000

void timer(int argument)
{
// Do something here.
if (iterations > 5) {
glutTimerFunc(TIME_INTERVAL, timer, iterations);
--iterations;
}
}

void init()
{ glutTimerFunc(TIME_INTERVAL, timer, iterations); }

01-12-2005, 01:32 PM
Thanks a lot, I really appreciate your suggestions. Thanks again!