taskswitcher/server/src/main.cpp
changeset 124 e36b2f4799c0
parent 121 0b3699f6c654
child 127 7b66bc3c6dc9
--- a/taskswitcher/server/src/main.cpp	Fri Sep 17 08:32:18 2010 +0300
+++ b/taskswitcher/server/src/main.cpp	Mon Oct 04 00:38:31 2010 +0300
@@ -26,35 +26,30 @@
 
 int main(int argc, char *argv[]) 
 {
-    QApplication app(argc, argv);
-    
-    // hide server from TaskSwitcher
-    CEikonEnv * env = CEikonEnv::Static();
-    if(env) {
+    RSemaphore semaphore;
+    int errNo( semaphore.CreateGlobal(KTsServerReadySemaphore, 0) );
+    if (KErrNone == errNo) {
+        QApplication app(argc, argv);
+        // maintain instance of caservice (needed for getting application icons)
+        QSharedPointer<CaService> service = CaService::instance();
+        TRAP(errNo,
+        // hide server from TaskSwitcher
+        CEikonEnv * env = CEikonEnv::Static();
+        User::LeaveIfNull( env );
         env->RootWin().SetOrdinalPosition(0, ECoeWinPriorityNeverAtFront);
-
-        CApaWindowGroupName *wgName = CApaWindowGroupName::NewLC(env->WsSession());    
+        CApaWindowGroupName *wgName = CApaWindowGroupName::NewLC(env->WsSession());
         wgName->SetHidden(ETrue); // hides us from FSW and protects us from OOM FW etc.
-        wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down    
-        wgName->SetCaptionL(KRunningAppServerName);    
+        wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down
+        wgName->SetCaptionL(KRunningAppServerName);
         wgName->SetWindowGroupName(env->RootWin());
         CleanupStack::PopAndDestroy(wgName);
+        CServer2* serverObject = CTsRunningAppServer::NewLC();
+        semaphore.Signal();
+        QT_TRYCATCH_LEAVING(errNo = app.exec());
+        User::LeaveIfError(errNo);
+        CleanupStack::PopAndDestroy(serverObject);
+        )//TRAP
+        semaphore.Close();
     }
-    
-    // maintain instance of caservice (needed for getting application icons)
-    QSharedPointer<CaService> service = CaService::instance();    
-    
-    CServer2* serverObject = CTsRunningAppServer::NewLC();    
-    CleanupStack::Pop(serverObject);
-    
-    RSemaphore semaphore;
-    if (KErrNone == semaphore.OpenGlobal(KTsServerReadySemaphore)) {
-        semaphore.Signal();
-    }
-    semaphore.Close();
-    
-    int result = app.exec();
-    
-    delete serverObject;
-    return result;
+    return errNo;
 }