taskswitcher/server/src/main.cpp
changeset 124 e36b2f4799c0
parent 121 0b3699f6c654
child 127 7b66bc3c6dc9
equal deleted inserted replaced
121:0b3699f6c654 124:e36b2f4799c0
    24 
    24 
    25 #include <caservice.h>
    25 #include <caservice.h>
    26 
    26 
    27 int main(int argc, char *argv[]) 
    27 int main(int argc, char *argv[]) 
    28 {
    28 {
    29     QApplication app(argc, argv);
    29     RSemaphore semaphore;
    30     
    30     int errNo( semaphore.CreateGlobal(KTsServerReadySemaphore, 0) );
    31     // hide server from TaskSwitcher
    31     if (KErrNone == errNo) {
    32     CEikonEnv * env = CEikonEnv::Static();
    32         QApplication app(argc, argv);
    33     if(env) {
    33         // maintain instance of caservice (needed for getting application icons)
       
    34         QSharedPointer<CaService> service = CaService::instance();
       
    35         TRAP(errNo,
       
    36         // hide server from TaskSwitcher
       
    37         CEikonEnv * env = CEikonEnv::Static();
       
    38         User::LeaveIfNull( env );
    34         env->RootWin().SetOrdinalPosition(0, ECoeWinPriorityNeverAtFront);
    39         env->RootWin().SetOrdinalPosition(0, ECoeWinPriorityNeverAtFront);
    35 
    40         CApaWindowGroupName *wgName = CApaWindowGroupName::NewLC(env->WsSession());
    36         CApaWindowGroupName *wgName = CApaWindowGroupName::NewLC(env->WsSession());    
       
    37         wgName->SetHidden(ETrue); // hides us from FSW and protects us from OOM FW etc.
    41         wgName->SetHidden(ETrue); // hides us from FSW and protects us from OOM FW etc.
    38         wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down    
    42         wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down
    39         wgName->SetCaptionL(KRunningAppServerName);    
    43         wgName->SetCaptionL(KRunningAppServerName);
    40         wgName->SetWindowGroupName(env->RootWin());
    44         wgName->SetWindowGroupName(env->RootWin());
    41         CleanupStack::PopAndDestroy(wgName);
    45         CleanupStack::PopAndDestroy(wgName);
       
    46         CServer2* serverObject = CTsRunningAppServer::NewLC();
       
    47         semaphore.Signal();
       
    48         QT_TRYCATCH_LEAVING(errNo = app.exec());
       
    49         User::LeaveIfError(errNo);
       
    50         CleanupStack::PopAndDestroy(serverObject);
       
    51         )//TRAP
       
    52         semaphore.Close();
    42     }
    53     }
    43     
    54     return errNo;
    44     // maintain instance of caservice (needed for getting application icons)
       
    45     QSharedPointer<CaService> service = CaService::instance();    
       
    46     
       
    47     CServer2* serverObject = CTsRunningAppServer::NewLC();    
       
    48     CleanupStack::Pop(serverObject);
       
    49     
       
    50     RSemaphore semaphore;
       
    51     if (KErrNone == semaphore.OpenGlobal(KTsServerReadySemaphore)) {
       
    52         semaphore.Signal();
       
    53     }
       
    54     semaphore.Close();
       
    55     
       
    56     int result = app.exec();
       
    57     
       
    58     delete serverObject;
       
    59     return result;
       
    60 }
    55 }