зеркало из https://github.com/mozilla/gecko-dev.git
Bug 945475 - clear |mVideoFrameContainer| to stop staled callbacks which give incorrect videoWidth/videoHeight. r=roc
This commit is contained in:
Родитель
ce63e5f311
Коммит
6edcb8f105
|
@ -760,9 +760,13 @@ NS_IMETHODIMP HTMLMediaElement::Load()
|
||||||
void HTMLMediaElement::ResetState()
|
void HTMLMediaElement::ResetState()
|
||||||
{
|
{
|
||||||
mMediaSize = nsIntSize(-1, -1);
|
mMediaSize = nsIntSize(-1, -1);
|
||||||
VideoFrameContainer* container = GetVideoFrameContainer();
|
// There might be a pending MediaDecoder::PlaybackPositionChanged() which
|
||||||
if (container) {
|
// will overwrite |mMediaSize| in UpdateMediaSize() to give staled videoWidth
|
||||||
container->Reset();
|
// and videoHeight. We have to call ForgetElement() here such that the staled
|
||||||
|
// callbacks won't reach us.
|
||||||
|
if (mVideoFrameContainer) {
|
||||||
|
mVideoFrameContainer->ForgetElement();
|
||||||
|
mVideoFrameContainer = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3012,7 +3016,10 @@ void HTMLMediaElement::MetadataLoaded(int aChannels,
|
||||||
// If this element had a video track, but consists only of an audio track now,
|
// If this element had a video track, but consists only of an audio track now,
|
||||||
// delete the VideoFrameContainer. This happens when the src is changed to an
|
// delete the VideoFrameContainer. This happens when the src is changed to an
|
||||||
// audio only file.
|
// audio only file.
|
||||||
if (!aHasVideo) {
|
if (!aHasVideo && mVideoFrameContainer) {
|
||||||
|
// call ForgetElement() such that callbacks from |mVideoFrameContainer|
|
||||||
|
// won't reach us anymore.
|
||||||
|
mVideoFrameContainer->ForgetElement();
|
||||||
mVideoFrameContainer = nullptr;
|
mVideoFrameContainer = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче