void Decoder::PostFrameStop(RasterImage::FrameAlpha aFrameAlpha /* = RasterImage::kFrameHasAlpha */, RasterImage::FrameDisposalMethod aDisposalMethod /* = RasterImage::kDisposeKeep */, int32_t aTimeout /* = 0 */, RasterImage::FrameBlendMethod aBlendMethod /* = RasterImage::kBlendOver */) { // We should be mid-frame NS_ABORT_IF_FALSE(mInFrame, "Stopping frame when we didn't start one!"); NS_ABORT_IF_FALSE(mCurrentFrame, "Stopping frame when we don't have one!"); // Update our state mInFrame = false; if (aFrameAlpha == RasterImage::kFrameOpaque) { mCurrentFrame->SetHasNoAlpha(); } mCurrentFrame->SetFrameDisposalMethod(aDisposalMethod); mCurrentFrame->SetTimeout(aTimeout); mCurrentFrame->SetBlendMethod(aBlendMethod); // Flush any invalidations before we finish the frame FlushInvalidations(); // Fire notifications if (mObserver) { mObserver->OnStopFrame(); if (mFrameCount > 1 && !mIsAnimated) { mIsAnimated = true; mObserver->OnImageIsAnimated(); } } }
void Decoder::PostFrameStop() { // We should be mid-frame NS_ABORT_IF_FALSE(mInFrame, "Stopping frame when we didn't start one!"); // Update our state mInFrame = false; // Flush any invalidations before we finish the frame FlushInvalidations(); // Fire notification if (mObserver) mObserver->OnStopFrame(nsnull, mFrameCount - 1); // frame # is zero-indexed }