Bug 1347836 part 2 - make HTMLMediaElement::GetCurrentImage() return an already_AddRefed<layers::Image>; r?jwwang
MozReview-Commit-ID: FZ4JRdbPUry
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -1522,34 +1522,35 @@ HTMLMediaElement::SetVisible(bool aVisib
{
if (!mDecoder) {
return;
}
mDecoder->SetForcedHidden(!aVisible);
}
-layers::Image*
+already_AddRefed<layers::Image>
HTMLMediaElement::GetCurrentImage()
{
// Mark the decoder owned by the element as tainted so that the
// suspend-video-decoder is disabled.
mHasSuspendTaint = true;
if (mDecoder) {
mDecoder->SetSuspendTaint(true);
}
// TODO: In bug 1345404, handle case when video decoder is already suspended.
ImageContainer* container = GetImageContainer();
if (!container) {
return nullptr;
}
AutoLockImage lockImage(container);
- return lockImage.GetImage();
+ RefPtr<layers::Image> image = lockImage.GetImage();
+ return image.forget();
}
bool
HTMLMediaElement::HasSuspendTaint() const
{
MOZ_ASSERT(!mDecoder || (mDecoder->HasSuspendTaint() == mHasSuspendTaint));
return mHasSuspendTaint;
}
--- a/dom/html/HTMLMediaElement.h
+++ b/dom/html/HTMLMediaElement.h
@@ -624,17 +624,17 @@ public:
bool HasSuspendTaint() const;
// Synchronously, return the next video frame and mark the element unable to
// participate in decode suspending.
//
// This function is synchronous for cases where decoding has been suspended
// and JS needs a frame to use in, eg., nsLayoutUtils::SurfaceFromElement()
// via drawImage().
- layers::Image* GetCurrentImage();
+ already_AddRefed<layers::Image> GetCurrentImage();
already_AddRefed<DOMMediaStream> GetSrcObject() const;
void SetSrcObject(DOMMediaStream& aValue);
void SetSrcObject(DOMMediaStream* aValue);
// TODO: remove prefixed versions soon (1183495).
already_AddRefed<DOMMediaStream> GetMozSrcObject() const;
void SetMozSrcObject(DOMMediaStream& aValue);