I've been looking at the ut_unixTimer behaviour, and I've find that: When the timer fires up, it call the function _Timer_Proc, which in turn, calls the real callback. After that, it performs a "resetIfStarted" (which creates a new one with the same period), and then [_Timer_Proc] finish returning 0 (which destroy the first timer). So, in short, each time that a timer is fired, we are recreating & destroying a timer. That, along with some problems in the way that we managed the timer id's, prevent us for doing that: UT_Timer *timer = UT_Timer::static_constructor(callback, data); int id = timer->getIdentifier(); timer->set(1); someOperationThatTakesMoreThatOneMillisecond(); UT_ASSERT(timer == UT_Timer::findTimer(id)); // This line will stop the app! furthermore, if we save id, and we don't save "timer", and we try to do something like: UT_Timer *timer = UT_Timer::findTimer(id); timer will be NULL. Is it intended behaviour? I don't think so. I will send a patch (as soon as I fix the bugs the Jesper found in the autosave stuff) to fix it. If somebody has further comments, please speak up. Cheers, -- Joaquín Cuenca Abela [EMAIL PROTECTED]
