diff -r b73a2e62868f -r 6dfc5f825351 locationmanager/locationtrail/src/cpositioninfo.cpp --- a/locationmanager/locationtrail/src/cpositioninfo.cpp Tue Feb 02 00:24:33 2010 +0200 +++ b/locationmanager/locationtrail/src/cpositioninfo.cpp Fri Mar 19 09:38:01 2010 +0200 @@ -52,7 +52,7 @@ // Set update interval. iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds(KFirstInterval) ); // Set time out level. - iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds(KUpdateTimeOut) ); + iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds(KFirstTimeOut) ); // Positions which have time stamp below KMaxAge can be reused iUpdateOptions.SetMaxUpdateAge( TTimeIntervalMicroSeconds(KMaxAge) ); // Disables location framework to send partial position data @@ -72,7 +72,7 @@ // CPositionInfo::~CPositionInfo // -------------------------------------------------------------------------- // -CPositionInfo::~CPositionInfo() +EXPORT_C CPositionInfo::~CPositionInfo() { Cancel(); iPositioner.Close(); @@ -98,6 +98,20 @@ iTrailCaptureSetting = aCaptureSetting; iUpdateInterval = aUpdateInterval; + iFirstInterval = ETrue; + iPositionInfo = TPositionSatelliteInfo(); + + + // Set update interval. + iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds(KFirstInterval) ); + // Set time out level. + iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds( KFirstTimeOut) ); + // Positions which have time stamp below KMaxAge can be reused + iUpdateOptions.SetMaxUpdateAge( TTimeIntervalMicroSeconds(KMaxAge) ); + // Disables location framework to send partial position data + iUpdateOptions.SetAcceptPartialUpdates( EFalse ); + + if ( aCaptureSetting == RLocationTrail::ECaptureAll ) { @@ -147,8 +161,7 @@ // void CPositionInfo::Stop() { - Cancel(); - + Cancel(); // Start shutdown timer... iPositioner.Close(); iPosServer.Close(); @@ -161,17 +174,19 @@ void CPositionInfo::RunL() { iTrail->Position( iPositionInfo, iStatus.Int() ); + if ( iFirstInterval && IsActive() ) { Cancel(); - iUpdateOptions.SetUpdateInterval( iUpdateInterval ); + LOG("CPositionInfo::RunL() - First Time"); + iUpdateOptions.SetUpdateInterval( TTimeIntervalMicroSeconds (iUpdateInterval) ); + iUpdateOptions.SetUpdateTimeOut( TTimeIntervalMicroSeconds(KUpdateTimeOut ) ); if ( iTrailCaptureSetting == RLocationTrail::ECaptureAll ) { - User::LeaveIfError( iPositioner.SetUpdateOptions( iUpdateOptions ) ); + User::LeaveIfError( iPositioner.SetUpdateOptions( iUpdateOptions ) ); iPositioner.NotifyPositionUpdate( iPositionInfo, iStatus ); } SetActive(); - iFirstInterval = EFalse; } } @@ -182,7 +197,8 @@ // void CPositionInfo::DoCancel() { - if ( !IsActive() ) + LOG( "CPositionInfo::DoCancel()" ); + if ( IsActive() ) { iPositioner.CancelRequest( EPositionerNotifyPositionUpdate ); }