Bug 1443232. Don't insert frames into our AnimationFrameBuffer that we consider in error and unusable. r=aosmond
authorTimothy Nikkel <tnikkel@gmail.com>
Thu, 08 Mar 2018 17:33:04 -0600
changeset 407221 6b039167ba763f8afa5ee4df6c2361d75fdcae65
parent 407220 5c28945e2e1e16d14f7f771bd16d58d0e3471fa5
child 407222 3db841301bfd8d7638b92575e76ecc550a2101af
push id100613
push usertnikkel@gmail.com
push dateThu, 08 Mar 2018 23:33:25 +0000
treeherdermozilla-inbound@6b039167ba76 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersaosmond
bugs1443232
milestone60.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1443232. Don't insert frames into our AnimationFrameBuffer that we consider in error and unusable. r=aosmond After decoding the first frame we allocate the second frame, but before it finishes we encounter an error, Decoder::PostError is called it aborts the second frame and decrements the frame count. But AnimationSurfaceProvider::CheckForFrameAtTerminalState just asks for the current frame ref from the decoder (which it never cleared) and inserts that. The condition that we use from the decoder to decide to report a new frame is mFinishedNewFrame (via TakeCompleteFrameCount), however this doesn't directly correspond to mFrameCount. So we create a new bool on the Decoder to track when there is a frame that we can take. This didn't cause any problems before but now we have tighter coupling between the list of frames the AnimationSurfaceProvider has and what FrameAnimator expects. Another possible fix would be to clear the current frame ref in PostError, but the only place we clear the current frame is when we allocate the new frame and we have the mImageData pointer still around that decoders could theorhetically use to do final processing on the last partial frame.
image/AnimationSurfaceProvider.cpp
image/Decoder.cpp
image/Decoder.h
image/test/reftest/generic/1443232-1.gif
image/test/reftest/generic/1443232-1.html
image/test/reftest/generic/reftest.list
--- a/image/AnimationSurfaceProvider.cpp
+++ b/image/AnimationSurfaceProvider.cpp
@@ -262,16 +262,19 @@ AnimationSurfaceProvider::CheckForNewFra
   bool justGotFirstFrame = false;
   bool continueDecoding;
 
   {
     MutexAutoLock lock(mFramesMutex);
 
     // Try to get the new frame from the decoder.
     RawAccessFrameRef frame = mDecoder->GetCurrentFrameRef();
+    MOZ_ASSERT(mDecoder->HasFrameToTake());
+    mDecoder->ClearHasFrameToTake();
+
     if (!frame) {
       MOZ_ASSERT_UNREACHABLE("Decoder yielded but didn't produce a frame?");
       return true;
     }
 
     // We should've gotten a different frame than last time.
     MOZ_ASSERT_IF(!mFrames.Frames().IsEmpty(),
                   mFrames.Frames().LastElement().get() != frame.get());
@@ -304,16 +307,28 @@ AnimationSurfaceProvider::CheckForNewFra
   bool continueDecoding;
 
   {
     MutexAutoLock lock(mFramesMutex);
 
     // The decoder may or may not have a new frame for us at this point. Avoid
     // reinserting the same frame again.
     RawAccessFrameRef frame = mDecoder->GetCurrentFrameRef();
+
+    // If the decoder didn't finish a new frame (ie if, after starting the
+    // frame, it got an error and aborted the frame and the rest of the decode)
+    // that means it won't be reporting it to the image or FrameAnimator so we
+    // should ignore it too, that's what HasFrameToTake tracks basically.
+    if (!mDecoder->HasFrameToTake()) {
+      frame = RawAccessFrameRef();
+    } else {
+      MOZ_ASSERT(frame);
+      mDecoder->ClearHasFrameToTake();
+    }
+
     if (!frame || (!mFrames.Frames().IsEmpty() &&
                    mFrames.Frames().LastElement().get() == frame.get())) {
       return mFrames.MarkComplete();
     }
 
     // Append the new frame to the list.
     mFrames.Insert(Move(frame));
     continueDecoding = mFrames.MarkComplete();
--- a/image/Decoder.cpp
+++ b/image/Decoder.cpp
@@ -58,16 +58,17 @@ Decoder::Decoder(RasterImage* aImage)
   , mLoopLength(FrameTimeout::Zero())
   , mDecoderFlags(DefaultDecoderFlags())
   , mSurfaceFlags(DefaultSurfaceFlags())
   , mInitialized(false)
   , mMetadataDecode(false)
   , mHaveExplicitOutputSize(false)
   , mInFrame(false)
   , mFinishedNewFrame(false)
+  , mHasFrameToTake(false)
   , mReachedTerminalState(false)
   , mDecodeDone(false)
   , mError(false)
   , mShouldReportError(false)
   , mFinalizeFrames(true)
 { }
 
 Decoder::~Decoder()
@@ -288,16 +289,18 @@ Decoder::AllocateFrame(uint32_t aFrameNu
                        gfx::SurfaceFormat aFormat,
                        uint8_t aPaletteDepth)
 {
   mCurrentFrame = AllocateFrameInternal(aFrameNum, aOutputSize, aFrameRect,
                                         aFormat, aPaletteDepth,
                                         mCurrentFrame.get());
 
   if (mCurrentFrame) {
+    mHasFrameToTake = true;
+
     // Gather the raw pointers the decoders will use.
     mCurrentFrame->GetImageData(&mImageData, &mImageDataLength);
     mCurrentFrame->GetPaletteData(&mColormap, &mColormapSize);
 
     // We should now be on |aFrameNum|. (Note that we're comparing the frame
     // number, which is zero-based, with the frame count, which is one-based.)
     MOZ_ASSERT(aFrameNum + 1 == mFrameCount);
 
@@ -527,13 +530,14 @@ Decoder::PostError()
   mError = true;
 
   if (mInFrame) {
     MOZ_ASSERT(mCurrentFrame);
     MOZ_ASSERT(mFrameCount > 0);
     mCurrentFrame->Abort();
     mInFrame = false;
     --mFrameCount;
+    mHasFrameToTake = false;
   }
 }
 
 } // namespace image
 } // namespace mozilla
--- a/image/Decoder.h
+++ b/image/Decoder.h
@@ -402,16 +402,21 @@ public:
   RasterImage* GetImageMaybeNull() const { return mImage.get(); }
 
   RawAccessFrameRef GetCurrentFrameRef()
   {
     return mCurrentFrame ? mCurrentFrame->RawAccessRef()
                          : RawAccessFrameRef();
   }
 
+  bool HasFrameToTake() const { return mHasFrameToTake; }
+  void ClearHasFrameToTake() {
+    MOZ_ASSERT(mHasFrameToTake);
+    mHasFrameToTake = false;
+  }
 
 protected:
   friend class AutoRecordDecoderTelemetry;
   friend class nsICODecoder;
   friend class PalettedSurfaceSink;
   friend class SurfaceSink;
 
   virtual ~Decoder();
@@ -575,16 +580,20 @@ private:
   SurfaceFlags mSurfaceFlags;
 
   bool mInitialized : 1;
   bool mMetadataDecode : 1;
   bool mHaveExplicitOutputSize : 1;
   bool mInFrame : 1;
   bool mFinishedNewFrame : 1;  // True if PostFrameStop() has been called since
                                // the last call to TakeCompleteFrameCount().
+  // Has a new frame that AnimationSurfaceProvider can take. Unfortunately this
+  // has to be separate from mFinishedNewFrame because the png decoder yields a
+  // new frame before calling PostFrameStop().
+  bool mHasFrameToTake : 1;
   bool mReachedTerminalState : 1;
   bool mDecodeDone : 1;
   bool mError : 1;
   bool mShouldReportError : 1;
   bool mFinalizeFrames : 1;
 };
 
 } // namespace image
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..198519e7c0d4b80aa5df525114cd3d4558f87f80
GIT binary patch
literal 42434
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
MZ&#l21Ary}7l)4DO#lD@
new file mode 100644
--- /dev/null
+++ b/image/test/reftest/generic/1443232-1.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<body>
+<img id='m1'><br/>
+<script>
+  var im1=document.getElementById('m1');
+  var step_state=0;
+  function handle_step(){
+    step_state+=1;
+    if(step_state == 1){
+      im1.src='data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs=';
+    }
+    else if(step_state==2){
+      im1.src='1443232-1.gif';
+    }
+    else if(step_state==3){
+      if(im1.height==2)
+        im1.height=1;
+      im1.height=2;
+      im1.getBoundingClientRect();
+      setTimeout(function(){document.documentElement.classList.remove("reftest-wait");}, 1000);
+    }
+  }
+  document.addEventListener('DOMContentLoaded', function(){
+    im1.addEventListener('load', handle_step, false);
+    im1.src='data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
+  });
+</script>
+</body>
+</html>
--- a/image/test/reftest/generic/reftest.list
+++ b/image/test/reftest/generic/reftest.list
@@ -1,1 +1,2 @@
 HTTP == accept-image-catchall.html accept-image-catchall-ref.html
+pref(image.downscale-during-decode.enabled,true) == 1443232-1.html about:blank