Merge "Properly report that we're no longer playing after receiving event" into ics-mr1
This commit is contained in:
committed by
Android (Google) Code Review
commit
27ed12492d
@@ -796,7 +796,7 @@ void NuPlayer::notifyListener(int msg, int ext1, int ext2) {
|
||||
return;
|
||||
}
|
||||
|
||||
driver->sendEvent(msg, ext1, ext2);
|
||||
driver->notifyListener(msg, ext1, ext2);
|
||||
}
|
||||
|
||||
void NuPlayer::flushDecoder(bool audio, bool needShutdown) {
|
||||
|
||||
@@ -35,6 +35,7 @@ NuPlayerDriver::NuPlayerDriver()
|
||||
mNumFramesDropped(0),
|
||||
mLooper(new ALooper),
|
||||
mState(UNINITIALIZED),
|
||||
mAtEOS(false),
|
||||
mStartupSeekTimeUs(-1) {
|
||||
mLooper->setName("NuPlayerDriver Looper");
|
||||
|
||||
@@ -106,7 +107,7 @@ status_t NuPlayerDriver::prepare() {
|
||||
}
|
||||
|
||||
status_t NuPlayerDriver::prepareAsync() {
|
||||
sendEvent(MEDIA_PREPARED);
|
||||
notifyListener(MEDIA_PREPARED);
|
||||
|
||||
return OK;
|
||||
}
|
||||
@@ -117,6 +118,7 @@ status_t NuPlayerDriver::start() {
|
||||
return INVALID_OPERATION;
|
||||
case STOPPED:
|
||||
{
|
||||
mAtEOS = false;
|
||||
mPlayer->start();
|
||||
|
||||
if (mStartupSeekTimeUs >= 0) {
|
||||
@@ -173,7 +175,7 @@ status_t NuPlayerDriver::pause() {
|
||||
}
|
||||
|
||||
bool NuPlayerDriver::isPlaying() {
|
||||
return mState == PLAYING;
|
||||
return mState == PLAYING && !mAtEOS;
|
||||
}
|
||||
|
||||
status_t NuPlayerDriver::seekTo(int msec) {
|
||||
@@ -190,6 +192,7 @@ status_t NuPlayerDriver::seekTo(int msec) {
|
||||
case PLAYING:
|
||||
case PAUSED:
|
||||
{
|
||||
mAtEOS = false;
|
||||
mPlayer->seekToAsync(seekTimeUs);
|
||||
break;
|
||||
}
|
||||
@@ -291,7 +294,7 @@ void NuPlayerDriver::notifyPosition(int64_t positionUs) {
|
||||
}
|
||||
|
||||
void NuPlayerDriver::notifySeekComplete() {
|
||||
sendEvent(MEDIA_SEEK_COMPLETE);
|
||||
notifyListener(MEDIA_SEEK_COMPLETE);
|
||||
}
|
||||
|
||||
void NuPlayerDriver::notifyFrameStats(
|
||||
@@ -320,4 +323,12 @@ status_t NuPlayerDriver::dump(int fd, const Vector<String16> &args) const {
|
||||
return OK;
|
||||
}
|
||||
|
||||
void NuPlayerDriver::notifyListener(int msg, int ext1, int ext2) {
|
||||
if (msg == MEDIA_PLAYBACK_COMPLETE || msg == MEDIA_ERROR) {
|
||||
mAtEOS = true;
|
||||
}
|
||||
|
||||
sendEvent(msg, ext1, ext2);
|
||||
}
|
||||
|
||||
} // namespace android
|
||||
|
||||
@@ -67,6 +67,7 @@ struct NuPlayerDriver : public MediaPlayerInterface {
|
||||
void notifyPosition(int64_t positionUs);
|
||||
void notifySeekComplete();
|
||||
void notifyFrameStats(int64_t numFramesTotal, int64_t numFramesDropped);
|
||||
void notifyListener(int msg, int ext1 = 0, int ext2 = 0);
|
||||
|
||||
protected:
|
||||
virtual ~NuPlayerDriver();
|
||||
@@ -95,6 +96,7 @@ private:
|
||||
};
|
||||
|
||||
State mState;
|
||||
bool mAtEOS;
|
||||
|
||||
int64_t mStartupSeekTimeUs;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user