Merge "Range check in MediaScanner::processDirectory"
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp
index 12d7ee2..7997cd6 100644
--- a/media/libstagefright/AudioPlayer.cpp
+++ b/media/libstagefright/AudioPlayer.cpp
@@ -99,13 +99,13 @@
: AudioSystem::CHANNEL_OUT_MONO,
8192, 0, &AudioCallback, this, 0);
- if (mAudioTrack->initCheck() != OK) {
+ if ((err = mAudioTrack->initCheck()) != OK) {
delete mAudioTrack;
mAudioTrack = NULL;
mSource->stop();
- return mAudioTrack->initCheck();
+ return err;
}
mLatencyUs = (int64_t)mAudioTrack->latency() * 1000;
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 1c9f4fd..59a5f9d 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -401,6 +401,9 @@
void AwesomePlayer::onBufferingUpdate() {
Mutex::Autolock autoLock(mLock);
+ if (!mBufferingEventPending) {
+ return;
+ }
mBufferingEventPending = false;
if (mDurationUs >= 0) {
@@ -425,6 +428,9 @@
// Posted whenever any stream finishes playing.
Mutex::Autolock autoLock(mLock);
+ if (!mStreamDoneEventPending) {
+ return;
+ }
mStreamDoneEventPending = false;
if (mFlags & LOOPING) {
@@ -918,6 +924,12 @@
void AwesomePlayer::onCheckAudioStatus() {
Mutex::Autolock autoLock(mLock);
+ if (!mAudioStatusEventPending) {
+ // Event was dispatched and while we were blocking on the mutex,
+ // has already been cancelled.
+ return;
+ }
+
mAudioStatusEventPending = false;
if (mWatchForAudioSeekComplete && !mAudioPlayer->isSeeking()) {