# HG changeset patch # User teknolog # Date 1274867072 -3600 # Node ID 87e863f6f8403fadc6af78fbb48707476f56e00f # Parent c2f1ea38ec70cf3abe73d5f560679839a303a7ee Fix for bug 2719. diff -r c2f1ea38ec70 -r 87e863f6f840 engine/inc/FeedTimer.h --- a/engine/inc/FeedTimer.h Thu May 13 13:56:05 2010 +0100 +++ b/engine/inc/FeedTimer.h Wed May 26 10:44:32 2010 +0100 @@ -36,6 +36,7 @@ private: TInt iPeriodMinutes; + TTime iTriggerTime; CFeedEngine *iFeedEngine; }; #endif diff -r c2f1ea38ec70 -r 87e863f6f840 engine/src/FeedTimer.cpp --- a/engine/src/FeedTimer.cpp Thu May 13 13:56:05 2010 +0100 +++ b/engine/src/FeedTimer.cpp Wed May 26 10:44:32 2010 +0100 @@ -35,13 +35,26 @@ void CFeedTimer::RunL() { - DP("CFeedTimer::RunL"); + DP("CFeedTimer::RunL BEGIN"); + + TTime time; + time.UniversalTime(); - // We need to trap this, otherwise we will not reschedule the timer - TRAP_IGNORE(iFeedEngine->UpdateAllFeedsL(ETrue)); - - // run again - RunPeriodically(); + if (time < iTriggerTime) + { + // timer was probably reset, this happens on Nokia every 30 minutes + DP("Timer reset"); + AtUTC(iTriggerTime); + } + else + { + // We need to trap this, otherwise we will not reschedule the timer + TRAP_IGNORE(iFeedEngine->UpdateAllFeedsL(ETrue)); + + // run again + RunPeriodically(); + } + DP("CFeedTimer::RunL END"); } void CFeedTimer::SetPeriod(TInt aPeriodMinutes) @@ -93,8 +106,8 @@ TTimeIntervalMinutes tmi; tmi = iPeriodMinutes; - time = time + tmi; + iTriggerTime = time + tmi; DP("Running timer"); - AtUTC(time); + AtUTC(iTriggerTime); }