OSDN Git Service

Bug 5068269 Fix assertion failure after prepare
authorGlenn Kasten <gkasten@google.com>
Thu, 21 Jul 2011 20:31:50 +0000 (13:31 -0700)
committerGlenn Kasten <gkasten@google.com>
Fri, 22 Jul 2011 20:06:24 +0000 (13:06 -0700)
Change-Id: I890a29eeef9021c7432da8a0ccb409846e107097

wilhelm/src/android/AudioPlayer_to_android.cpp
wilhelm/src/android/MediaPlayer_to_android.cpp
wilhelm/src/android/android_defs.h

index eb70284..8690b11 100644 (file)
@@ -666,7 +666,8 @@ static void sfplayer_handlePrefetchEvent(int event, int data1, int data2, void*
             assert(ap->mAudioTrack == 0);
             assert(ap->mNumChannels == UNKNOWN_NUMCHANNELS);
             assert(ap->mSampleRateMilliHz == UNKNOWN_SAMPLERATE);
-            assert(ap->mAndroidObjState == ANDROID_UNINITIALIZED);
+            assert(ap->mAndroidObjState == ANDROID_PREPARING);
+            ap->mAndroidObjState = ANDROID_READY;
 
             object_unlock_exclusive(&ap->mObject);
 
index f6128d2..9593af3 100644 (file)
@@ -219,6 +219,7 @@ XAresult android_Player_create(CMediaPlayer *mp) {
         break;
     }
 
+    // FIXME duplicates an initialization also done by higher level
     mp->mAndroidObjState = ANDROID_UNINITIALIZED;
     mp->mStreamType = ANDROID_DEFAULT_OUTPUT_STREAM_TYPE;
     mp->mSessionId = android::AudioSystem::newAudioSessionId();
index 73186d6..dc054c3 100644 (file)
@@ -42,13 +42,13 @@ enum AndroidObjectType {
 
 /**
  * Used to define the states of the OpenSL ES / OpenMAX AL object initialization and preparation
- * with regards to the Android-side of the data
+ * with regards to the Android-side of the data, in particular as affected by the play state.
  */
 enum AndroidObjectState {
-    ANDROID_UNINITIALIZED = -1,
-    ANDROID_PREPARING,
-    ANDROID_READY,
-    NUM_ANDROID_STATES
+    ANDROID_UNINITIALIZED = -1, // never called SetPlayState(PAUSED or PLAYING)
+    ANDROID_PREPARING,          // currently preparing due to first SetPlayState(PAUSED or PLAYING)
+    ANDROID_READY,              // preparation has completed, and will not be attempted again
+    // NUM_ANDROID_STATES       // unused
 };