From 5bd3bb46b1f1576cfece8e462c46cca00ddd1351 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Wed, 16 Mar 2011 10:41:25 -0700 Subject: [PATCH] DO NOT MERGE: Fix a race condition when playing an audio-only stream and seeking before starting. Change-Id: I70dfdfb7c27e3c713079c359ef89a570eb600dc7 related-to-bug: 4039068 --- media/libstagefright/AwesomePlayer.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 5734c7ea1e0b1..1f8de9f2762b5 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -750,8 +750,6 @@ status_t AwesomePlayer::play_l() { mFlags |= PLAYING; mFlags |= FIRST_FRAME; - bool deferredAudioSeek = false; - if (mDecryptHandle != NULL) { int64_t position; getPosition(&position); @@ -767,10 +765,11 @@ status_t AwesomePlayer::play_l() { mTimeSource = mAudioPlayer; - deferredAudioSeek = true; - - mWatchForAudioSeekComplete = false; - mWatchForAudioEOS = true; + // If there was a seek request before we ever started, + // honor the request now. + // Make sure to do this before starting the audio player + // to avoid a race condition. + seekAudioIfNecessary_l(); } } @@ -808,12 +807,6 @@ status_t AwesomePlayer::play_l() { } } - if (deferredAudioSeek) { - // If there was a seek request while we were paused - // and we're just starting up again, honor the request now. - seekAudioIfNecessary_l(); - } - if (mFlags & AT_EOS) { // Legacy behaviour, if a stream finishes playing and then // is started again, we play from the start...