Bug 1020176 - AudioOffloadPlayer: Avoid calling ResumeStateMachine from multiple paths. r=roc

This commit is contained in:
Vasanthakumar Pandurangan 2014-06-04 14:25:21 +05:30
Родитель 20ab3c6e32
Коммит 8f52671cb0
1 изменённых файлов: 7 добавлений и 4 удалений

Просмотреть файл

@ -124,10 +124,13 @@ void MediaOmxDecoder::ResumeStateMachine()
void MediaOmxDecoder::AudioOffloadTearDown() void MediaOmxDecoder::AudioOffloadTearDown()
{ {
MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(NS_IsMainThread());
PlaybackPositionChanged();
DECODER_LOG(PR_LOG_DEBUG, ("%s", __PRETTY_FUNCTION__)); DECODER_LOG(PR_LOG_DEBUG, ("%s", __PRETTY_FUNCTION__));
{
// mAudioOffloadPlayer can be null here if ResumeStateMachine was called
// just before because of some other error.
if (mAudioOffloadPlayer) {
// Audio offload player sent tear down event. Fallback to state machine // Audio offload player sent tear down event. Fallback to state machine
PlaybackPositionChanged();
ResumeStateMachine(); ResumeStateMachine();
} }
} }
@ -136,10 +139,10 @@ void MediaOmxDecoder::AddOutputStream(ProcessedMediaStream* aStream,
bool aFinishWhenEnded) bool aFinishWhenEnded)
{ {
MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(NS_IsMainThread());
PlaybackPositionChanged();
if (mAudioOffloadPlayer) { if (mAudioOffloadPlayer) {
// Offload player cannot handle MediaStream. Fallback // Offload player cannot handle MediaStream. Fallback
PlaybackPositionChanged();
ResumeStateMachine(); ResumeStateMachine();
} }
@ -149,11 +152,11 @@ void MediaOmxDecoder::AddOutputStream(ProcessedMediaStream* aStream,
void MediaOmxDecoder::SetPlaybackRate(double aPlaybackRate) void MediaOmxDecoder::SetPlaybackRate(double aPlaybackRate)
{ {
MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(NS_IsMainThread());
PlaybackPositionChanged();
if (mAudioOffloadPlayer && if (mAudioOffloadPlayer &&
((aPlaybackRate != 0.0) || (aPlaybackRate != 1.0))) { ((aPlaybackRate != 0.0) || (aPlaybackRate != 1.0))) {
// Offload player cannot handle playback rate other than 1/0. Fallback // Offload player cannot handle playback rate other than 1/0. Fallback
PlaybackPositionChanged();
ResumeStateMachine(); ResumeStateMachine();
} }