taskswitcher/client/s60/src/tssession.cpp
changeset 124 e36b2f4799c0
parent 121 0b3699f6c654
--- 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()