Bug 1676989. Update mCompositedFrameInvalid more often now that we only check for the current frame being decoded and not all frames. r=aosmond

In https://hg.mozilla.org/integration/autoland/rev/471ad96ddc3e we changed this from calling |Surface().IsFullyDecoded()| to calling Seek because IsFullyDecoded always returns false for large enough animations because we don't keep around all of their frames.

In the old model, where mIsCurrentlyDecoded tracks if the image is fully decoded, we don't want to set mCompositedFrameInvalid to true if simply if the image isn't fully decoded because the current frame could be available.

In the new model, where mIsCurrentlyDecoded tracks if the current frame is available, we definitely do want to mark mCompositedFrameInvalid if the current frame is not available.

Depends on D96944

Differential Revision: https://phabricator.services.mozilla.com/D96945
This commit is contained in:
Timothy Nikkel 2020-11-13 03:25:33 +00:00
parent ba567fa55c
commit 3e452098c6

View File

@ -84,8 +84,7 @@ const gfx::IntRect AnimationState::UpdateStateInternal(
ret.SizeTo(aSize);
}
mCompositedFrameInvalid = false;
} else if (aResult.Type() == MatchType::NOT_FOUND ||
aResult.Type() == MatchType::PENDING) {
} else {
if (mHasRequestedDecode) {
MOZ_ASSERT(StaticPrefs::image_mem_animated_discardable_AtStartup());
mCompositedFrameInvalid = true;