Index: third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp |
diff --git a/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp b/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp |
index 5ee289a40e3ca26c6604984daf57cd59664b3c46..ca5cd381ab7d136bddbcee7da9317cfe7f01229f 100644 |
--- a/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp |
+++ b/third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp |
@@ -159,7 +159,6 @@ bool GIFImageDecoder::HaveDecodedRow(size_t frame_index, |
*current_address = color_table_iter[source_value]; |
} else { |
*current_address = 0; |
- current_buffer_saw_alpha_ = true; |
} |
} |
} else { |
@@ -168,8 +167,6 @@ bool GIFImageDecoder::HaveDecodedRow(size_t frame_index, |
if ((source_value != transparent_pixel) && |
(source_value < color_table.size())) |
*current_address = color_table_iter[source_value]; |
- else |
- current_buffer_saw_alpha_ = true; |
} |
} |
@@ -191,10 +188,13 @@ bool GIFImageDecoder::FrameComplete(size_t frame_index) { |
if (!InitFrameBuffer(frame_index)) |
return SetFailed(); |
- if (!current_buffer_saw_alpha_) |
- CorrectAlphaWhenFrameBufferSawNoAlpha(frame_index); |
+ ImageFrame& buffer = frame_buffer_cache_[frame_index]; |
+ |
+ const GIFFrameContext* frame_context = reader_->frameContext(frame_index); |
+ const size_t transparent_pixel = frame_context->transparentPixel(); |
+ buffer.SetHasAlpha(transparent_pixel != kNotFound); |
scroggo_chromium
2017/05/08 14:56:36
I think we should also consider the case where the
cblume
2017/05/25 07:47:04
Done.
|
- frame_buffer_cache_[frame_index].SetStatus(ImageFrame::kFrameComplete); |
+ buffer.SetStatus(ImageFrame::kFrameComplete); |
return true; |
} |
@@ -269,10 +269,6 @@ void GIFImageDecoder::Parse(GIFParseQuery query) { |
SetFailed(); |
} |
-void GIFImageDecoder::OnInitFrameBuffer(size_t frame_index) { |
- current_buffer_saw_alpha_ = false; |
-} |
- |
bool GIFImageDecoder::CanReusePreviousFrameBuffer(size_t frame_index) const { |
DCHECK(frame_index < frame_buffer_cache_.size()); |
return frame_buffer_cache_[frame_index].GetDisposalMethod() != |