diff -r 0b3699f6c654 -r e36b2f4799c0 taskswitcher/client/s60/src/tssession.cpp --- a/taskswitcher/client/s60/src/tssession.cpp Fri Sep 17 08:32:18 2010 +0300 +++ b/taskswitcher/client/s60/src/tssession.cpp Mon Oct 04 00:38:31 2010 +0300 @@ -42,42 +42,43 @@ } TInt RTsSession::StartServer() -{ - TInt error; - + { RSemaphore semaphore; - error = semaphore.CreateGlobal(KTsServerReadySemaphore, 0); - - if (KErrNone == error || KErrAlreadyExists == error) { + CleanupClosePushL(semaphore); + TInt error = semaphore.OpenGlobal(KTsServerReadySemaphore); + if (KErrNone != error) { RProcess server; + CleanupClosePushL(server); error = server.Create(KRunningAppServerName, KNullDesC, TUidType(KNullUid, KNullUid, KRunningAppServerUid)); - if (KErrNone == error) { + if (KErrNone == error) + { TRequestStatus status; server.Rendezvous(status); - - if (status != KRequestPending) { + if (status != KRequestPending) + { server.Kill(0); User::WaitForRequest(status); - } else { + } + else + { server.Resume(); User::WaitForRequest(status); - - // wait for server - semaphore.Wait(); - } - - if (KErrCancel == status.Int()) { + } + + if(KErrCancel == status.Int()) + { error = KErrNone; - } else { + } + else + { error = (EExitPanic == server.ExitType()) ? KErrGeneral : status.Int(); + } } + CleanupStack::PopAndDestroy(&server); } - server.Close(); + CleanupStack::PopAndDestroy(&semaphore); + return error; } - semaphore.Close(); - - return error; -} HBufC8* RTsSession::TasksContentLC()