Here's my algo. Im using Microseconds as unit for my timers
* Init iMicroSecCycle to 1000000(microsec)/10
*Create CActive set timer to iMicroSecCycle
* Init Timer iTimer.After(iStatus,iMicroSecCycle);
*On RunL it does some long routines
*Init TTime startTime.HomeTime()
* Do some process here / Draw / Read from file
* Cancel CActive is EOF reached (should be 30 seconds)
*Init TTIme endTime.HomeTime()
*compute TInt nDelta = timeEnd.MicroSecondsFrom(timeStart).Int64().GetTInt();
* nDelta is always less than iMicroSecCycle
* TTimeIntervalMicroSeconds32 tDelta(iMicroSecCycle-nDelta);
* Init Timer iTimer.After(iStatus,tDelta);
* SetActive - will invoke RunL after tDelta lapse
It should only last for 30 seconds but on emulator its 45 seconds and on actual handset its 36 seconds
Is TTime::HomeTime Accurate?
Is RTimer::After Accurate?
Is microseconds unit the base for timer?
Am i doing something wrong?
// timer request has completed, lets post a nilEvent!
if (iStatus == KErrNone)
TTime timeA, timeB;
// do work
// put a request for the next event
timerDiff = gGlobals->evtTimeOut - timeB.MicroSecondsFrom(timeA).Int64().Low();
if (timerDiff < 1) timerDiff = 1; // must be positive
i found that TTime.HomeTime() only reports to multiples of 10000 microseconds (10 milliseconds), which, is kinda normal for most mobile devices. this is not the best accuracy, however, it is pretty close to what it needed. ideally, the most optimal method would be to do the CTimer::After call at the start of the routine, but, then you will run into problems with the thread trying to restart while the old is still going. this normally leads to ViewSvr 11 errors
i have our cube3d demo currently working within the 'app' frame work running at around 40-45 fps. the display doesn't seem capable on the unit of rendering 30 fps, but, the speeds are totally possible - i dont think it is your timer events slowing you down our demo originally ran at 4-5 fps, and, there are a lot of ways to optimize/speed your applications up. Nokia is hopeless at documenting stuff, so, i found out by stress testing and trying everything under the book until i found performance gains.