--- 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()