diff -r 646a02f170b9 -r 3cebc1a84278 locationmanager/server/src/clocationmanagerserver.cpp --- a/locationmanager/server/src/clocationmanagerserver.cpp Fri Mar 12 15:44:28 2010 +0200 +++ b/locationmanager/server/src/clocationmanagerserver.cpp Mon Mar 15 12:42:24 2010 +0200 @@ -100,7 +100,8 @@ iLocManStopDelay( 0 ), iLocManStopRemapDelay( 0 ), iCaptureSetting( RLocationTrail::EOff ), - iRemoveLocation( EFalse ) + iRemoveLocation( EFalse ), + iWaitForPositioningStopTimeout ( EFalse ) { } @@ -307,6 +308,8 @@ void CLocationManagerServer::StartGPSPositioningL( RLocationTrail::TTrailCaptureSetting aCaptureSetting ) { LOG( "CLocationManagerServer::StartGPSPositioningL" ); + iWaitForPositioningStopTimeout = EFalse; + if ( aCaptureSetting == RLocationTrail::EOff ) { return; @@ -338,6 +341,7 @@ { LOG( "CLocationManagerServer::StopGPSPositioningL()" ); iCaptureSetting = RLocationTrail::EOff; + iWaitForPositioningStopTimeout = EFalse; RLocationTrail::TTrailState state; GetLocationTrailState( state ); @@ -345,7 +349,7 @@ if( state != RLocationTrail::ETrailStopped && state != RLocationTrail::ETrailStopping ) { - TRAPD( error, iTimer = CPeriodic::NewL( CActive::EPriorityHigh ) ); + TRAPD( error, iTimer = CPeriodic::NewL( CActive::EPriorityUserInput ) ); if ( error != KErrNone ) { @@ -369,8 +373,9 @@ // void CLocationManagerServer::StopRecording() { - LOG( "CLocationManagerServer::StopRecording()" ); - iLocationRecord->Stop(); + LOG( "CLocationManagerServer::StopRecording()" ); + iWaitForPositioningStopTimeout = EFalse; + iLocationRecord->Stop(); delete iTimer; iTimer = NULL; } @@ -402,6 +407,7 @@ if ( self->iLocationRecord->RemappingNeeded() ) { self->iTimer->Start( self->iLocManStopRemapDelay * 1000000, 0, TCallBack( PositioningStopTimeout, self ) ); + self->iWaitForPositioningStopTimeout = ETrue; } else { @@ -773,8 +779,7 @@ if( iTargetObjectIds.Count() <= 0 ) { TInt err = 0; - const TInt count = aTargets.Count(); - for( TInt i = 0 ; i < count ; i++ ) + for( TInt i = aTargets.Count() - 1; i >=0; i-- ) { TRAP( err, iMdeSession->CheckObjectL( obj, aTargets[i], &namespaceDef ) ); if ( err == KErrNone ) @@ -881,8 +886,7 @@ CMdERelationDef& containsRelDef = aQuery.NamespaceDef().GetRelationDefL( Relations::KContainsLocation ); - const TInt count = iTargetObjectIds.Count(); - for( TInt i=0;i=0; i-- ) { CMdERelation* relationObject = iMdeSession->NewRelationLC( containsRelDef, iTargetObjectIds[i], rightId, 0 ); @@ -891,6 +895,7 @@ CleanupStack::PopAndDestroy( relationObject ); } + CleanupStack::PopAndDestroy( sourceLocation ); for ( TInt i = iCopyReqs.Count() - 1; i >= 0; --i ) @@ -967,9 +972,9 @@ targetUris.ReserveL( uriCount ); // deserialize URIs - for( TInt i = 0; i < uriCount; i++ ) + for( TInt i = uriCount- 1; i >=0; i-- ) { - targetUris.Append( uriBuffer->ReceivePtr16L() ); + targetUris.AppendL( uriBuffer->ReceivePtr16L() ); } LOG1("CLocationManagerSession::CopyLocationDataByUriL ID count:%d", targetUris.Count()); @@ -1271,4 +1276,17 @@ { iTrackLog->AddGpxObserver( aObserver ); } + +void CLocationManagerServer::RemapedCompleted() + { + LOG( "CLocationManagerServer::RemapedCompleted()" ); + StopRecording(); + } + +TBool CLocationManagerServer::WaitForPositioningStopTimeout() + { + LOG( "CLocationManagerServer::WaitForPositioningStopTimeout()" ); + return iWaitForPositioningStopTimeout; + } + // End of file