diff options
author | Insun Kang <insun@google.com> | 2012-09-20 21:03:44 +0900 |
---|---|---|
committer | Insun Kang <insun@google.com> | 2012-09-20 22:20:26 +0900 |
commit | ef58870d2c798f046c87b06be0ec0cad109a754b (patch) | |
tree | 52211cd8e0c9963b8ec8f88609dcd6e2975a8265 /media/libstagefright/timedtext/TimedTextDriver.cpp | |
parent | d5a9ae029b50678de3b468d8324728a73ff5b0aa (diff) | |
download | frameworks_av-ef58870d2c798f046c87b06be0ec0cad109a754b.zip frameworks_av-ef58870d2c798f046c87b06be0ec0cad109a754b.tar.gz frameworks_av-ef58870d2c798f046c87b06be0ec0cad109a754b.tar.bz2 |
Bug fix: MediaPlayer's deselectTrack() for subtitle.
o Previously, deselectTrack() actually doesn't work properly in
TimedTextDriver / TimedTextPlayer.
o Ignores select track operation when the same track is selected in a
row.
Bug: 7200096
TESTED=runtest -d cts-media -c android.media.cts.MediaPlayerTest
Change-Id: If7feac294cf9b358f616be45574bc2e26001c887
Diffstat (limited to 'media/libstagefright/timedtext/TimedTextDriver.cpp')
-rw-r--r-- | media/libstagefright/timedtext/TimedTextDriver.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/media/libstagefright/timedtext/TimedTextDriver.cpp b/media/libstagefright/timedtext/TimedTextDriver.cpp index 54ce7ac..12fd7f4 100644 --- a/media/libstagefright/timedtext/TimedTextDriver.cpp +++ b/media/libstagefright/timedtext/TimedTextDriver.cpp @@ -43,7 +43,8 @@ TimedTextDriver::TimedTextDriver( const wp<MediaPlayerBase> &listener) : mLooper(new ALooper), mListener(listener), - mState(UNINITIALIZED) { + mState(UNINITIALIZED), + mCurrentTrackIndex(UINT_MAX) { mLooper->setName("TimedTextDriver"); mLooper->start(); mPlayer = new TimedTextPlayer(listener); @@ -57,6 +58,9 @@ TimedTextDriver::~TimedTextDriver() { } status_t TimedTextDriver::selectTrack_l(size_t index) { + if (mCurrentTrackIndex == index) { + return OK; + } sp<TimedTextSource> source; source = mTextSourceVector.valueFor(index); mPlayer->setDataSource(source); @@ -138,11 +142,12 @@ status_t TimedTextDriver::unselectTrack(size_t index) { if (mCurrentTrackIndex != index) { return INVALID_OPERATION; } + mCurrentTrackIndex = UINT_MAX; switch (mState) { case UNINITIALIZED: return INVALID_OPERATION; case PLAYING: - mPlayer->pause(); + mPlayer->setDataSource(NULL); mState = UNINITIALIZED; return OK; case PREPARED: |