genericopenlibs/openenvcore/libc/src/timefuncs.cpp
branchRCL_3
changeset 3 18f64da82512
parent 0 e4d67989cc36
child 33 6896b031c3e1
child 45 4b03adbd26ca
--- 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);