musichomescreen_multiview/mcpmusicplayer/src/applicationmonitor.cpp
changeset 2 b70d77332e66
parent 0 ff3acec5bc43
equal deleted inserted replaced
1:8118492f1bdf 2:b70d77332e66
    85     RWsSession wsSession;
    85     RWsSession wsSession;
    86     User::LeaveIfError( wsSession.Connect() );
    86     User::LeaveIfError( wsSession.Connect() );
    87     TUint64 threadId(0);
    87     TUint64 threadId(0);
    88     TBool taskExists(EFalse);
    88     TBool taskExists(EFalse);
    89     TInt status = KErrNone;
    89     TInt status = KErrNone;
       
    90     iAppUid = aAppUid;
    90     if(aRootAppIndication)
    91     if(aRootAppIndication)
    91         {
    92         {
    92         CAknTaskList* taskList = CAknTaskList::NewL( wsSession );
    93         CAknTaskList* taskList = CAknTaskList::NewL( wsSession );
    93         TApaTask task = taskList->FindRootApp( aAppUid );
    94         TApaTask task = taskList->FindRootApp( aAppUid );
    94         delete taskList;
    95         delete taskList;
   129 void CApplicationMonitor::RunL()
   130 void CApplicationMonitor::RunL()
   130     {
   131     {
   131     MPX_DEBUG1("CApplicationMonitor::RunL <---");
   132     MPX_DEBUG1("CApplicationMonitor::RunL <---");
   132     switch (iStatus.Int())
   133     switch (iStatus.Int())
   133         {
   134         {
   134         case EExitKill: 
   135         case EExitPending: 
   135         case EExitTerminate:
   136             MPX_DEBUG1("CApplicationMonitor::RunL reason = EExitPending");
   136         case EExitPanic:
   137             iThread.Close();
   137             MPX_DEBUG1("CApplicationMonitor::RunL kill\terminate\panic");
   138             TRAPD(err, StartL( iAppUid ) );
   138             iObserver.HandleApplicationClosedL((TExitType) iStatus.Int());
   139             if (KErrNone != err)
       
   140                 {
       
   141                 MPX_DEBUG1("CApplicationMonitor::RunL reason = EExitPending but thread is really gone");
       
   142                 iObserver.HandleApplicationClosedL((TExitType) iStatus.Int());
       
   143                 }
   139             break;
   144             break;
   140         case KErrCancel:
   145         case KErrCancel:
   141         case KErrNoMemory:
   146             MPX_DEBUG1("CApplicationMonitor::RunL cancel");
   142             MPX_DEBUG1("CApplicationMonitor::RunL cancel\memory");
       
   143             break;
   147             break;
   144         case EExitPending: 
       
   145         default:
   148         default:
   146             MPX_DEBUG1("CApplicationMonitor::RunL exitpendin\default");
   149         	  MPX_DEBUG2("CApplicationMonitor::RunL reason = %d", iStatus.Int());
   147             // Listen again
   150         	  iObserver.HandleApplicationClosedL((TExitType) iStatus.Int());
   148             iThread.Logon(iStatus);
       
   149             SetActive();
       
   150             break;
   151             break;
   151         }
   152         }
   152     MPX_DEBUG1("CApplicationMonitor::RunL --->");
   153     MPX_DEBUG1("CApplicationMonitor::RunL --->");
   153     }
   154     }
   154 
   155 
   169 // ----------------------------------------------------------------------------
   170 // ----------------------------------------------------------------------------
   170 //
   171 //
   171 TInt CApplicationMonitor::RunError(TInt /*aError*/)
   172 TInt CApplicationMonitor::RunError(TInt /*aError*/)
   172     {
   173     {
   173     MPX_DEBUG1("CApplicationMonitor::RunError <---");
   174     MPX_DEBUG1("CApplicationMonitor::RunError <---");
   174     // Listen again
       
   175     iThread.Logon(iStatus);
       
   176     SetActive();
       
   177     MPX_DEBUG1("CApplicationMonitor::RunError --->");
   175     MPX_DEBUG1("CApplicationMonitor::RunError --->");
   178     return KErrNone;
   176     return KErrNone;
   179     }
   177     }