diff -r 0b3699f6c654 -r e36b2f4799c0 taskswitcher/server/src/main.cpp --- 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 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 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; }