diff options
author | Insun Kang <insun@google.com> | 2012-06-18 16:51:48 +0900 |
---|---|---|
committer | Insun Kang <insun@google.com> | 2012-08-02 11:56:07 +0900 |
commit | 6472badc497a9e748411f8c8c9ed5d83ef335a85 (patch) | |
tree | 682bc926abcc04dff0783b1fa4ecb379d2908cb5 /media/libstagefright/timedtext/TimedTextDriver.cpp | |
parent | bb6bc8491fe819f96e1902e56694715cb110ce94 (diff) | |
download | frameworks_av-6472badc497a9e748411f8c8c9ed5d83ef335a85.zip frameworks_av-6472badc497a9e748411f8c8c9ed5d83ef335a85.tar.gz frameworks_av-6472badc497a9e748411f8c8c9ed5d83ef335a85.tar.bz2 |
Fix: status checking in TimedTextDriver.
o fixes seeking error when there's no enabled text track.
o clean up status checking code for deselectTrack.
o fixes a potential bug : pause->backward seek can trigger unwanted
resume.
Bug: 6682160
Change-Id: I03d8788b27fb9c0a6092be83ad3578ccf3266905
(cherry picked from commit 2dafb6071d4f14e0e208912500694912211aa26b)
Diffstat (limited to 'media/libstagefright/timedtext/TimedTextDriver.cpp')
-rw-r--r-- | media/libstagefright/timedtext/TimedTextDriver.cpp | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/media/libstagefright/timedtext/TimedTextDriver.cpp b/media/libstagefright/timedtext/TimedTextDriver.cpp index 1a0dc7b..71da803 100644 --- a/media/libstagefright/timedtext/TimedTextDriver.cpp +++ b/media/libstagefright/timedtext/TimedTextDriver.cpp @@ -145,21 +145,41 @@ status_t TimedTextDriver::selectTrack(size_t index) { } status_t TimedTextDriver::unselectTrack(size_t index) { + Mutex::Autolock autoLock(mLock); if (mCurrentTrackIndex != index) { return INVALID_OPERATION; } - status_t err = pause(); - if (err != OK) { - return err; + switch (mState) { + case UNINITIALIZED: + return INVALID_OPERATION; + case PLAYING: + mPlayer->pause(); + mState = UNINITIALIZED; + return OK; + case PAUSED: + mState = UNINITIALIZED; + return OK; + default: + TRESPASS(); } - Mutex::Autolock autoLock(mLock); - mState = UNINITIALIZED; - return OK; + return UNKNOWN_ERROR; } status_t TimedTextDriver::seekToAsync(int64_t timeUs) { - mPlayer->seekToAsync(timeUs); - return OK; + Mutex::Autolock autoLock(mLock); + switch (mState) { + case UNINITIALIZED: + return INVALID_OPERATION; + case PAUSED: + mPlayer->seekToAsync(timeUs); + return OK; + case PLAYING: + mPlayer->seekToAsync(timeUs); + return OK; + defaut: + TRESPASS(); + } + return UNKNOWN_ERROR; } status_t TimedTextDriver::addInBandTextSource( |