Bug 653420 - nsHTMLMediaElement should traverse/unlink mSourceLoadCandidate, r=chris@pearce.org.nz?

--HG--
extra : rebase_source : fa3e87f031dced4391e2caa83541d1c85ecb62c9
This commit is contained in:
Olli Pettay 2011-04-28 17:08:03 +03:00
Родитель bb92b93561
Коммит ef06907e3d
1 изменённых файлов: 11 добавлений и 5 удалений

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

@ -371,11 +371,13 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(nsHTMLMediaElement)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsHTMLMediaElement, nsGenericHTMLElement)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mSourcePointer)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mLoadBlockedDoc)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mSourceLoadCandidate)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsHTMLMediaElement, nsGenericHTMLElement)
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mSourcePointer)
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mLoadBlockedDoc)
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mSourceLoadCandidate)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(nsHTMLMediaElement)
@ -685,10 +687,11 @@ void nsHTMLMediaElement::NotifyLoadError()
if (!mIsLoadingFromSourceChildren) {
LOG(PR_LOG_DEBUG, ("NotifyLoadError(), no supported media error"));
NoSupportedMediaSourceError();
} else {
NS_ASSERTION(mSourceLoadCandidate, "Must know the source we were loading from!");
} else if (mSourceLoadCandidate) {
DispatchAsyncSourceError(mSourceLoadCandidate);
QueueLoadFromSourceTask();
} else {
NS_WARNING("Should know the source we were loading from!");
}
}
@ -1977,14 +1980,17 @@ void nsHTMLMediaElement::NetworkError()
void nsHTMLMediaElement::DecodeError()
{
if (mIsLoadingFromSourceChildren) {
NS_ASSERTION(mSourceLoadCandidate, "Must know the source we were loading from!");
if (mDecoder) {
mDecoder->Shutdown();
mDecoder = nsnull;
}
mError = nsnull;
DispatchAsyncSourceError(mSourceLoadCandidate);
QueueLoadFromSourceTask();
if (mSourceLoadCandidate) {
DispatchAsyncSourceError(mSourceLoadCandidate);
QueueLoadFromSourceTask();
} else {
NS_WARNING("Should know the source we were loading from!");
}
} else {
Error(nsIDOMMediaError::MEDIA_ERR_DECODE);
}