commit | 695da9c53938e41e3dad12238c4e0374539c9d9a | [log] [tgz] |
---|---|---|
author | ckitagawa <ckitagawa@chromium.org> | Mon Apr 12 17:32:54 2021 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Apr 12 17:32:54 2021 |
tree | e6eba6649efb61e48013fe3f98d8f182e8561e8a | |
parent | c78127aa713d6042bba346f1b1ae76375ba0ebfc [diff] |
[Paint Preview] Handle failed alpha inflation Alpha inflation has been seen to fail very rarely in the beta channel. When this happens the bitmap fails to draw as: 1) ARGB_8888 is the config. 2) hasAlpha() is true. 3) isPremultiplied() is false since the alpha failed to inflate. This causes an uncatchable runtime exception when attempting to draw to a canvas. If alpha inflation fails 1) If we choose to ignore the failure, hasAlpha() should remain false which will avoid the exception. 2) We can just skip the failure and try again. It is unclear if the issue would be caused by corruption or memory pressure. As a follow-up to this very rare case we could discard the CompressibleBitmap and re-request it but that is a lot of work for such a rare case. Bug: 1197123 Change-Id: Ib93f581a308e291f94f455a3e705c75af7e78f3d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2815440 Reviewed-by: Mehran Mahmoudi <mahmoudi@chromium.org> Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org> Cr-Commit-Position: refs/heads/master@{#871526}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.