|
|
Chromium Code Reviews|
Created:
5 years ago by Noel Gordon Modified:
5 years ago CC:
chromium-reviews, pdr+graphicswatchlist_chromium.org, drott+blinkwatch_chromium.org, Rik, blink-reviews-platform-graphics_chromium.org, dshwang, jbroman, Justin Novosad, danakj, krit, f(malita), blink-reviews, vmpstr+blinkwatch_chromium.org, Stephen Chennney, rwlbuis, Stephen White, scroggo_chromium Base URL:
https://chromium.googlesource.com/chromium/src.git@master Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionDeferred GIF image decodes should report decode failures
For fast/images/size-failure.html fails due to slimming paint,
attempt to help resolve that issue. The image in the test is a
single-frame GIF which fails to decode due to corrupt LZW data
but the decoding failure is not recorded in the deferred image
decode system, causing continual re-decode requests while this
image is painted. All these extra decode requests fail.
When the GIF decoder landed in deferred, it no longer recorded
decode failures for GIF, and that was a regression in behavior
compared to the main-thread GIF decoder [1].
DecodingImageGenerator.cpp: include the frame index in the API
used for decoding (used for ImageFrameGenerator trace).
ImageFrameGenerator.cpp: removed m_decodeCount (was always set
to 0, never updated, and only used for trace). Change the name
of the decode failure member (AndEmpty suffix adds nothing) to
|m_decodeFailed|. Use it to record decoding failures, even for
multi-frame images like GIF to deny further requests to decode
the image (and undo the GIF behavioral regression [1]).
Add a new API to retrieve the decoding failure state. No mutex
is used when reading the state (not needed).
The comments, "This method is called to populate a discardable
memory owned by Skia" are removed. The deferred decoder writes
to the memory it is told to write to; it is not discardable in
all cases, other parts of the code even say that. GIF does not
currently decode to discardable memory, for example.
DeferredImageDecoder.cpp: detect decoding failures when frames
are requested and early-return on all decoding paths.
ImageFrameGeneratorTest.cpp: update the tests (the frame index
is the first argument of m_generator->decodeAndScale now).
[1] https://codereview.chromium.org/19838002
BUG=501543
Committed: https://crrev.com/edb61309dc83fb68645fbf712a885c5ad5d977b1
Cr-Commit-Position: refs/heads/master@{#366329}
Patch Set 1 : #
Total comments: 2
Patch Set 2 : Patch for landing #
Messages
Total messages: 32 (22 generated)
Patchset #1 (id:1) has been deleted
Description was changed from ========== fast/images/size-failure.html fails due to slimming paint BUG=501543 ========== to ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases: other parts of the code even say that. GIF does not decode to discardable at all. DeferredImageDecoder.cpp: detect decoding failures when frames are reqeusted and early return on all decoding paths. ImageFrameGeneratorTest.cpp: updates the test (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ==========
Description was changed from ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases: other parts of the code even say that. GIF does not decode to discardable at all. DeferredImageDecoder.cpp: detect decoding failures when frames are reqeusted and early return on all decoding paths. ImageFrameGeneratorTest.cpp: updates the test (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ========== to ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases: other parts of the code even say that. GIF does not currently decode to discardable memory. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early return on all decoding paths. ImageFrameGeneratorTest.cpp: updates the test (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ==========
Description was changed from ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases: other parts of the code even say that. GIF does not currently decode to discardable memory. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early return on all decoding paths. ImageFrameGeneratorTest.cpp: updates the test (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ========== to ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early return on all decoding paths. ImageFrameGeneratorTest.cpp: updates the test (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ==========
noel@chromium.org changed reviewers: + enne@chromium.org
The CQ bit was checked by noel@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1527433002/20001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1527433002/20001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
Description was changed from ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early return on all decoding paths. ImageFrameGeneratorTest.cpp: updates the test (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ========== to ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ==========
Description was changed from ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ========== to ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ==========
Description was changed from ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). BUG=501543 ========== to ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ==========
Description was changed from ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ========== to ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ==========
PTAL.
scroggo@chromium.org changed reviewers: + scroggo@chromium.org
lgtm https://codereview.chromium.org/1527433002/diff/20001/third_party/WebKit/Sour... File third_party/WebKit/Source/platform/graphics/ImageFrameGenerator.cpp (right): https://codereview.chromium.org/1527433002/diff/20001/third_party/WebKit/Sour... third_party/WebKit/Source/platform/graphics/ImageFrameGenerator.cpp:202: // by Skia. If not, make a copy. I support removing the comment above ("This method is called to populate a discardable memory owned by Skia") for the exact reason you mentioned - this method populates whatever memory was handed to it at |pixels|. I think this comment should be modified for the same reason. You can just remove "by Skia".
https://codereview.chromium.org/1527433002/diff/20001/third_party/WebKit/Sour... File third_party/WebKit/Source/platform/graphics/ImageFrameGenerator.cpp (right): https://codereview.chromium.org/1527433002/diff/20001/third_party/WebKit/Sour... third_party/WebKit/Source/platform/graphics/ImageFrameGenerator.cpp:202: // by Skia. If not, make a copy. On 2015/12/18 18:12:06, scroggo_chromium wrote: > I support removing the comment above ("This method is called to populate a > discardable memory owned by Skia") for the exact reason you mentioned - this > method populates whatever memory was handed to it at |pixels|. I think this > comment should be modified for the same reason. You can just remove "by Skia". Thanks Leon, done. Removed the "by Skia" bit.
The CQ bit was checked by noel@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1527433002/40001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1527433002/40001
Description was changed from ========== fast/images/size-failure.html fails due to slimming paint Attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ========== to ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ==========
Description was changed from ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ========== to ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single-frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All the extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ==========
Description was changed from ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single-frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All the extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API decoding calls (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ========== to ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single-frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All the extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API used for decoding (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ==========
Description was changed from ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single-frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All the extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API used for decoding (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ========== to ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single-frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API used for decoding (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ==========
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by noel@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from scroggo@chromium.org Link to the patchset: https://codereview.chromium.org/1527433002/#ps40001 (title: "Patch for landing")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1527433002/40001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1527433002/40001
Message was sent while issue was closed.
Description was changed from ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single-frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API used for decoding (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ========== to ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single-frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API used for decoding (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ==========
Message was sent while issue was closed.
Committed patchset #2 (id:40001)
Message was sent while issue was closed.
Description was changed from ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single-frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API used for decoding (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 ========== to ========== Deferred GIF image decodes should report decode failures For fast/images/size-failure.html fails due to slimming paint, attempt to help resolve that issue. The image in the test is a single-frame GIF which fails to decode due to corrupt LZW data but the decoding failure is not recorded in the deferred image decode system, causing continual re-decode requests while this image is painted. All these extra decode requests fail. When the GIF decoder landed in deferred, it no longer recorded decode failures for GIF, and that was a regression in behavior compared to the main-thread GIF decoder [1]. DecodingImageGenerator.cpp: include the frame index in the API used for decoding (used for ImageFrameGenerator trace). ImageFrameGenerator.cpp: removed m_decodeCount (was always set to 0, never updated, and only used for trace). Change the name of the decode failure member (AndEmpty suffix adds nothing) to |m_decodeFailed|. Use it to record decoding failures, even for multi-frame images like GIF to deny further requests to decode the image (and undo the GIF behavioral regression [1]). Add a new API to retrieve the decoding failure state. No mutex is used when reading the state (not needed). The comments, "This method is called to populate a discardable memory owned by Skia" are removed. The deferred decoder writes to the memory it is told to write to; it is not discardable in all cases, other parts of the code even say that. GIF does not currently decode to discardable memory, for example. DeferredImageDecoder.cpp: detect decoding failures when frames are requested and early-return on all decoding paths. ImageFrameGeneratorTest.cpp: update the tests (the frame index is the first argument of m_generator->decodeAndScale now). [1] https://codereview.chromium.org/19838002 BUG=501543 Committed: https://crrev.com/edb61309dc83fb68645fbf712a885c5ad5d977b1 Cr-Commit-Position: refs/heads/master@{#366329} ==========
Message was sent while issue was closed.
Patchset 2 (id:??) landed as https://crrev.com/edb61309dc83fb68645fbf712a885c5ad5d977b1 Cr-Commit-Position: refs/heads/master@{#366329} |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
