Index: src/codec/SkGifCodec.cpp |
diff --git a/src/codec/SkGifCodec.cpp b/src/codec/SkGifCodec.cpp |
index e7d8afdd0791118d18d0ff5921322f64a259d641..876d71f553a1a45ed3b1f04a08468aacd02a37a5 100644 |
--- a/src/codec/SkGifCodec.cpp |
+++ b/src/codec/SkGifCodec.cpp |
@@ -293,17 +293,12 @@ SkCodec::Result SkGifCodec::decodeFrame(bool firstAttempt, const Options& opts, |
// We may need to clear to transparent for one of the following reasons: |
// - The frameRect does not cover the full bounds. haveDecodedRow will |
// only draw inside the frameRect, so we need to clear the rest. |
- // - There is a valid transparent pixel value. (FIXME: I'm assuming |
- // writeTransparentPixels will be false in this case, based on |
- // Chromium's assumption that it would already be zeroed. If we |
- // change that behavior, could we skip Filling here?) |
// - The frame is interlaced. There is no obvious way to fill |
// afterwards for an incomplete image. (FIXME: Does the first pass |
// cover all rows? If so, we do not have to fill here.) |
// - There is no color table for this frame. In that case will not |
// draw anything, so we need to fill. |
if (frameContext->frameRect() != this->getInfo().bounds() |
- || frameContext->transparentPixel() < SK_MAX_COLORS |
|| frameContext->interlaced() || !fCurrColorTableIsReal) { |
// fill ignores the width (replaces it with the actual, scaled width). |
// But we need to scale in Y. |
@@ -489,12 +484,10 @@ bool SkGifCodec::haveDecodedRow(size_t frameIndex, const unsigned char* rowBegin |
void* dstLine = SkTAddOffset<void>(fDst, dstRow * fDstRowBytes); |
// We may or may not need to write transparent pixels to the buffer. |
- // If we're compositing against a previous image, it's wrong, and if |
- // we're writing atop a cleared, fully transparent buffer, it's |
- // unnecessary; but if we're decoding an interlaced gif and |
- // displaying it "Haeberli"-style, we must write these for passes |
- // beyond the first, or the initial passes will "show through" the |
- // later ones. |
+ // If we're compositing against a previous image, it's wrong, but if |
+ // we're decoding an interlaced gif and displaying it "Haeberli"-style, |
+ // we must write these for passes beyond the first, or the initial passes |
+ // will "show through" the later ones. |
const auto dstInfo = this->dstInfo(); |
if (writeTransparentPixels || dstInfo.colorType() == kRGB_565_SkColorType) { |
fSwizzler->swizzle(dstLine, rowBegin); |