summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/timedtext/TimedTextDriver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/timedtext/TimedTextDriver.cpp')
-rw-r--r--media/libstagefright/timedtext/TimedTextDriver.cpp9
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: