musichomescreen_multiview/mcpmusicplayer/src/applicationmonitor.cpp
changeset 2 b70d77332e66
parent 0 ff3acec5bc43
--- a/musichomescreen_multiview/mcpmusicplayer/src/applicationmonitor.cpp	Thu Jan 07 12:45:53 2010 +0200
+++ b/musichomescreen_multiview/mcpmusicplayer/src/applicationmonitor.cpp	Mon Jan 18 20:18:06 2010 +0200
@@ -87,6 +87,7 @@
     TUint64 threadId(0);
     TBool taskExists(EFalse);
     TInt status = KErrNone;
+    iAppUid = aAppUid;
     if(aRootAppIndication)
         {
         CAknTaskList* taskList = CAknTaskList::NewL( wsSession );
@@ -131,22 +132,22 @@
     MPX_DEBUG1("CApplicationMonitor::RunL <---");
     switch (iStatus.Int())
         {
-        case EExitKill: 
-        case EExitTerminate:
-        case EExitPanic:
-            MPX_DEBUG1("CApplicationMonitor::RunL kill\terminate\panic");
-            iObserver.HandleApplicationClosedL((TExitType) iStatus.Int());
+        case EExitPending: 
+            MPX_DEBUG1("CApplicationMonitor::RunL reason = EExitPending");
+            iThread.Close();
+            TRAPD(err, StartL( iAppUid ) );
+            if (KErrNone != err)
+                {
+                MPX_DEBUG1("CApplicationMonitor::RunL reason = EExitPending but thread is really gone");
+                iObserver.HandleApplicationClosedL((TExitType) iStatus.Int());
+                }
             break;
         case KErrCancel:
-        case KErrNoMemory:
-            MPX_DEBUG1("CApplicationMonitor::RunL cancel\memory");
+            MPX_DEBUG1("CApplicationMonitor::RunL cancel");
             break;
-        case EExitPending: 
         default:
-            MPX_DEBUG1("CApplicationMonitor::RunL exitpendin\default");
-            // Listen again
-            iThread.Logon(iStatus);
-            SetActive();
+        	  MPX_DEBUG2("CApplicationMonitor::RunL reason = %d", iStatus.Int());
+        	  iObserver.HandleApplicationClosedL((TExitType) iStatus.Int());
             break;
         }
     MPX_DEBUG1("CApplicationMonitor::RunL --->");
@@ -171,9 +172,6 @@
 TInt CApplicationMonitor::RunError(TInt /*aError*/)
     {
     MPX_DEBUG1("CApplicationMonitor::RunError <---");
-    // Listen again
-    iThread.Logon(iStatus);
-    SetActive();
     MPX_DEBUG1("CApplicationMonitor::RunError --->");
     return KErrNone;
     }