locationmanager/server/src/clocationmanagerserver.cpp
changeset 43 c5e73110f733
parent 40 910a23996aa0
--- a/locationmanager/server/src/clocationmanagerserver.cpp	Fri Jul 23 10:03:59 2010 +0300
+++ b/locationmanager/server/src/clocationmanagerserver.cpp	Fri Aug 06 09:56:02 2010 +0300
@@ -76,6 +76,7 @@
         {
         TRAP( ret, RunServerL() );
         delete cleanup;
+        cleanup = NULL;
         }
     return ret;
     }
@@ -99,7 +100,7 @@
 // --------------------------------------------------------------------------
 //
 CLocationManagerServer::CLocationManagerServer() 
-    : CPolicyServer( CActive::EPriorityStandard, 
+    : CPolicyServer( KLocManagerSessionPriority, 
                      KLocationManagerPolicy, 
                      ESharableSessions ),
                      iASW(NULL),
@@ -133,10 +134,6 @@
     LOG ("CLocationManagerServer::ConstructL() begin");
     
     StartL( KLocServerName );
-    
-    RProcess process;
-    process.SetPriority( EPriorityBackground );
-    process.Close();
 
     // initialize etel
     InitialisePhoneL();
@@ -149,45 +146,49 @@
     
     iNwRegistrationStatusHandler = CNwRegistrationStatusHandler::NewL(iPhone);
     
-    iMdeSession = CMdESession::NewL( *this );
     iLocationRecord = CLocationRecord::NewL(*this, iPhone);
     iTrackLog = CTrackLog::NewL();
+    iMdeSession = CMdESession::NewL( *this );   
+
+    iLocationRecord->SetObserver( this );
     
-    iASW->Start();
+    iLocationRecord->SetAddObserver( iTrackLog );
+    
+    iTrackLog->AddGpxObserver( this );
+    
+    CRepository* repository = CRepository::NewLC( KRepositoryUid );
+    TInt err = repository->Get( KLocationTrailShutdownTimer, iLocManStopDelay );
+    
+    LOG1("iLocManStopDelay:%d", iLocManStopDelay);
+    
+    if ( err != KErrNone )
+        {
+        LOG1("iLocManStopDelay err:%d", err);
+        iLocManStopDelay = KLocationTrailShutdownDelay;
+        }
+
+    err = repository->Get( KLocationTrailRemapShutdownTimer, iLocManStopRemapDelay );
+    CleanupStack::PopAndDestroy( repository );
+    
+    LOG1("iLocManStopRemapDelay:%d", iLocManStopRemapDelay);
+    
+    if ( err != KErrNone )
+        {
+        LOG1("iLocManStopRemapDelay err:%d", err);
+        iLocManStopRemapDelay = KLocationTrailRemapShutdownDelay;
+        }
+
+    if( !iSessionReady )
+        {
+        iASW->Start();      
+        }
+
     delete iASW;
-    iASW = NULL;
-    if(iSessionReady)
+    iASW = NULL;   
+
+    if( iSessionReady )
         {
         LOG("Session is ready to give service");
-        
-        iLocationRecord->SetObserver( this );
-        
-        iLocationRecord->SetAddObserver( iTrackLog );
-        
-        iTrackLog->AddGpxObserver( this );
-        
-        CRepository* repository = CRepository::NewLC( KRepositoryUid );
-    	TInt err = repository->Get( KLocationTrailShutdownTimer, iLocManStopDelay );
-    	
-        LOG1("iLocManStopDelay:%d", iLocManStopDelay);
-        
-        if ( err != KErrNone )
-        	{
-            LOG1("iLocManStopDelay err:%d", err);
-            iLocManStopDelay = KLocationTrailShutdownDelay;
-        	}
-
-        err = repository->Get( KLocationTrailRemapShutdownTimer, iLocManStopRemapDelay );
-        CleanupStack::PopAndDestroy( repository );
-        
-        LOG1("iLocManStopRemapDelay:%d", iLocManStopRemapDelay);
-        
-        if ( err != KErrNone )
-            {
-            LOG1("iLocManStopRemapDelay err:%d", err);
-            iLocManStopRemapDelay = KLocationTrailRemapShutdownDelay;
-            }
-        
         //Create the instance of the geotagging timer object
         // Create timer, if n/w or reverse geo code based feature flag is enabled
 #if defined(LOC_REVERSEGEOCODE) || defined(LOC_GEOTAGGING_CELLID)
@@ -199,8 +200,13 @@
     else
         {
         LOG("Unable to open MDE session. Closing..");
-        User::Leave(KErrCouldNotConnect);
+        User::Leave( KErrCouldNotConnect );
         }
+        
+    RProcess process;
+    process.SetPriority( EPriorityBackground );
+    process.Close();
+    
     LOG ("CLocationManagerServer::ConstructL() end");
     }
 
@@ -227,6 +233,8 @@
     iTrackLog = NULL;
     delete iTimer;
     iTimer = NULL;
+    delete iRelationQuery;
+    iRelationQuery = NULL;
     delete iASW;
     iASW = NULL;
     delete iMdeSession;
@@ -1108,6 +1116,7 @@
 						}
 					iCopyReqs[i].iMessage.Complete( aError );
 					delete iCopyReqs[i].iQuery;
+					iCopyReqs[i].iQuery = NULL;
 					iCopyReqs.Remove( i );
 					break;
 					}
@@ -1154,6 +1163,7 @@
     		{
     		iCopyReqs[i].iMessage.Complete( KErrNone );
     		delete iCopyReqs[i].iQuery;
+    		iCopyReqs[i].iQuery = NULL;
     		iCopyReqs.Remove( i );
     		break;
     		}