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()
{
MOZ_ASSERT(NS_IsMainThread());
PlaybackPositionChanged();
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
PlaybackPositionChanged();
ResumeStateMachine();
}
}
@ -136,10 +139,10 @@ void MediaOmxDecoder::AddOutputStream(ProcessedMediaStream* aStream,
bool aFinishWhenEnded)
{
MOZ_ASSERT(NS_IsMainThread());
PlaybackPositionChanged();
if (mAudioOffloadPlayer) {
// Offload player cannot handle MediaStream. Fallback
PlaybackPositionChanged();
ResumeStateMachine();
}
@ -149,11 +152,11 @@ void MediaOmxDecoder::AddOutputStream(ProcessedMediaStream* aStream,
void MediaOmxDecoder::SetPlaybackRate(double aPlaybackRate)
{
MOZ_ASSERT(NS_IsMainThread());
PlaybackPositionChanged();
if (mAudioOffloadPlayer &&
((aPlaybackRate != 0.0) || (aPlaybackRate != 1.0))) {
// Offload player cannot handle playback rate other than 1/0. Fallback
PlaybackPositionChanged();
ResumeStateMachine();
}