OSDN Git Service

Follow-up of NJ-1422 : Fixing PlayerDriver and AuthorDriver to catch any leaves
authorSahil Sachdeva <sahils@google.com>
Thu, 18 Jun 2009 00:18:58 +0000 (17:18 -0700)
committerSahil Sachdeva <sahils@google.com>
Thu, 18 Jun 2009 00:52:09 +0000 (17:52 -0700)
which happens in player or author, during playback or recording. This is to avoid
a leave to get transferred to upper layers, resulting in calling abort and crashing.

android/author/authordriver.cpp
android/playerdriver.cpp

index 24d5ebb..f061ec6 100644 (file)
@@ -1062,7 +1062,13 @@ int AuthorDriver::authorThread()
     PendForExec();
 
     OsclExecScheduler *sched = OsclExecScheduler::Current();
-    sched->StartScheduler(mSyncSem);
+    error = OsclErrNone;
+    OSCL_TRY(error, sched->StartScheduler(mSyncSem));
+    OSCL_FIRST_CATCH_ANY(error,
+             // Some AO did a leave, log it
+             LOGE("Author Engine AO did a leave, error=%d", error)
+            );
+
     LOGV("Delete Author");
     PVAuthorEngineFactory::DeleteAuthor(mAuthor);
     mAuthor = NULL;
index c76af6a..0713246 100644 (file)
@@ -1017,7 +1017,12 @@ int PlayerDriver::playerThread()
     LOGV("OsclActiveScheduler::Current");
     OsclExecScheduler *sched = OsclExecScheduler::Current();
     LOGV("StartScheduler");
-    sched->StartScheduler(mSyncSem);
+    error = OsclErrNone;
+    OSCL_TRY(error, sched->StartScheduler(mSyncSem));
+    OSCL_FIRST_CATCH_ANY(error,
+                         // Some AO did a leave, log it
+                         LOGE("Player Engine AO did a leave, error=%d", error)
+                        );
 
     LOGV("DeletePlayer");
     PVPlayerFactory::DeletePlayer(mPlayer);