diff -r e4d67989cc36 -r 18f64da82512 genericopenlibs/openenvcore/libc/src/timefuncs.cpp --- a/genericopenlibs/openenvcore/libc/src/timefuncs.cpp Tue Feb 02 02:01:42 2010 +0200 +++ b/genericopenlibs/openenvcore/libc/src/timefuncs.cpp Sat Feb 20 00:31:00 2010 +0200 @@ -162,7 +162,7 @@ aDate; aReference; #endif - +/* //This part has been commented out because of performance issue. Also this requires capability. if(RProcess().HasCapability(ECapabilityReadUserData,ECapabilityWriteUserData,NULL)) { // tm_zone updated only in this case. Otherwise always has UTC. @@ -184,9 +184,12 @@ CnvUtfConverter::ConvertFromUnicodeToUtf8(ptr,zoneNameDesc); CleanupStack::PopAndDestroy(timezone); CleanupStack::PopAndDestroy(localizer); - } - aTmStruct->tm_zone = tzname[0]; - } + } + + aTmStruct->tm_zone = tzname[0]; */ + + aTmStruct->tm_zone = "WILDABBR"; + } void ConvertUtcToLocalTimeL(const time_t* aUTCTime, struct tm* const atmStruct) { @@ -194,7 +197,6 @@ { User::Leave(KErrArgument); } - TTime time(KEpochTime + (*aUTCTime) * (TInt64)1000000); TTime Utime(time); @@ -216,14 +218,11 @@ return; } - RTz tzServer; - User::LeaveIfError(tzServer.Connect()); - CleanupClosePushL(tzServer); - TDateTime tdt = time.DateTime(); //enable the cache - CTzConverter* ctzConverter = CTzConverter::NewL(tzServer); + CTzConverter* ctzConverter = CTzConverter::NewL(Backend()->TZServer()); + CleanupStack::PushL(ctzConverter); if(ctzConverter->ConvertToLocalTime(time) == KErrNone) { @@ -244,10 +243,12 @@ CleanupStack::PushL(zoneid); atmStruct->tm_isdst = -1; - UpdateDstAndTznameL(tzServer, *zoneid, atmStruct, time, Utime, tdt, ETzWallTimeReference); + UpdateDstAndTznameL(Backend()->TZServer(), *zoneid, atmStruct, time, Utime, tdt, ETzWallTimeReference); CleanupStack::PopAndDestroy(zoneid); } - CleanupStack::PopAndDestroy(2); + + + CleanupStack::PopAndDestroy(1); cachetm = *atmStruct; } @@ -279,11 +280,8 @@ return; } - RTz tzServer; - User::LeaveIfError(tzServer.Connect()); - CleanupClosePushL(tzServer); - CTzConverter* ctzConverter = CTzConverter::NewL(tzServer); + CTzConverter* ctzConverter = CTzConverter::NewL(Backend()->TZServer()); CleanupStack::PushL(ctzConverter); /* Following fields are updated if successful: * tm_wday @@ -307,17 +305,18 @@ CleanupStack::PushL(zoneid); aTmStruct->tm_isdst = -1; - UpdateDstAndTznameL(tzServer, *zoneid, aTmStruct, oldTime, time, tdt, ETzUtcTimeReference); + UpdateDstAndTznameL(Backend()->TZServer(), *zoneid, aTmStruct, oldTime, time, tdt, ETzUtcTimeReference); CleanupStack::PopAndDestroy(zoneid); } cachetm = *aTmStruct; - CleanupStack::PopAndDestroy(2); + CleanupStack::PopAndDestroy(1); } // converts a UTC time to local time, or, local time to UTC time. TInt ConvertTime(const TInt atimeConverFlg, time_t *aUTCTime, struct tm *const atmStruct) { TInt err = 0; + CActiveScheduler* oldAs = CActiveScheduler::Current(); RHeap* oldHeap = User::SwitchHeap(Backend()->Heap()); CActiveScheduler* newAs = new CActiveScheduler(); @@ -335,9 +334,11 @@ { CActiveScheduler::Install(newAs); } - + + oldHeap = User::SwitchHeap(Backend()->Heap()); // Cleanup stack needed CTrapCleanup* cleanup=CTrapCleanup::New(); + if (cleanup) { if(EUtcToLocal == atimeConverFlg) @@ -358,7 +359,8 @@ { (void)CActiveScheduler::Replace(oldAs); } - oldHeap = User::SwitchHeap(Backend()->Heap()); + + delete newAs; User::SwitchHeap(oldHeap); return MapError(err,errno);