Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ccd5914d authored by Wei Jia's avatar Wei Jia
Browse files

mediaplayer2: fix state during data source switching

Test: cts
Bug: 130126316
Change-Id: Ic2022435954521a113082a13b05947abbe84ba2f
parent 0e5a1b3b
Loading
Loading
Loading
Loading
+15 −3
Original line number Original line Diff line number Diff line
@@ -1026,8 +1026,16 @@ void MediaPlayer2::notify(int64_t srcId, int msg, int ext1, int ext2, const Play
    case MEDIA2_NOP: // interface test message
    case MEDIA2_NOP: // interface test message
        break;
        break;
    case MEDIA2_PREPARED:
    case MEDIA2_PREPARED:
        ALOGV("MediaPlayer2::notify() prepared");
        ALOGV("MediaPlayer2::notify() prepared, srcId=%lld", (long long)srcId);
        if (srcId == mSrcId) {
            mCurrentState = MEDIA_PLAYER2_PREPARED;
            mCurrentState = MEDIA_PLAYER2_PREPARED;
        }
        break;
    case MEDIA2_STARTED:
        ALOGV("MediaPlayer2::notify() started, srcId=%lld", (long long)srcId);
        if (srcId == mSrcId) {
            mCurrentState = MEDIA_PLAYER2_STARTED;
        }
        break;
        break;
    case MEDIA2_DRM_INFO:
    case MEDIA2_DRM_INFO:
        ALOGV("MediaPlayer2::notify() MEDIA2_DRM_INFO(%lld, %d, %d, %d, %p)",
        ALOGV("MediaPlayer2::notify() MEDIA2_DRM_INFO(%lld, %d, %d, %d, %p)",
@@ -1038,7 +1046,7 @@ void MediaPlayer2::notify(int64_t srcId, int msg, int ext1, int ext2, const Play
        if (mCurrentState == MEDIA_PLAYER2_IDLE) {
        if (mCurrentState == MEDIA_PLAYER2_IDLE) {
            ALOGE("playback complete in idle state");
            ALOGE("playback complete in idle state");
        }
        }
        if (!mLoop) {
        if (!mLoop && srcId == mSrcId) {
            mCurrentState = MEDIA_PLAYER2_PLAYBACK_COMPLETE;
            mCurrentState = MEDIA_PLAYER2_PLAYBACK_COMPLETE;
        }
        }
        break;
        break;
@@ -1054,6 +1062,10 @@ void MediaPlayer2::notify(int64_t srcId, int msg, int ext1, int ext2, const Play
        // ext2: Implementation dependant error code.
        // ext2: Implementation dependant error code.
        if (ext1 != MEDIA2_INFO_VIDEO_TRACK_LAGGING) {
        if (ext1 != MEDIA2_INFO_VIDEO_TRACK_LAGGING) {
            ALOGW("info/warning (%d, %d)", ext1, ext2);
            ALOGW("info/warning (%d, %d)", ext1, ext2);

            if (ext1 == MEDIA2_INFO_DATA_SOURCE_START && srcId == mSrcId) {
                mCurrentState = MEDIA_PLAYER2_STARTED;
            }
        }
        }
        break;
        break;
    case MEDIA2_SEEK_COMPLETE:
    case MEDIA2_SEEK_COMPLETE: