commit | aa112d47f50d2e437dde2e3f9aa5b9b712851117 | [log] [tgz] |
---|---|---|
author | Joel Klinghed <the_jk@opera.com> | Tue May 07 22:42:55 2019 |
committer | Commit Bot <commit-bot@chromium.org> | Tue May 07 22:42:55 2019 |
tree | 941ab28139a7d653da91fd8d23d496ff1a92d884 | |
parent | e8532f51dec283fc5afc6bd96335d3c7c305235f [diff] |
Avoid never-ending loop in FrameEvictionManager::CullUnlockedFrames If enable surface synchronization is disabled and the frame is visible then DelegatedFrameHostAndroid::EvictDelegatedFrame() will only reset content_layer_ to null but not evict the surface as that causes https://crbug.com/933374. Trouble is that if the frame is then hidden without any new content_layer being created the next call to DelegatedFrameHostAndroid::EvictDelegatedFrame() will do nothing as content_layer_ is null but the frame is still in the list of unlocked frames in FrameEvicitionManager causing the next call to FrameEvictionManager::CullUnlockedFrames that tries to evict the frame to do nothing and loop forever (or hit a DCHECK if those are enabled). Fix this by not doing early exit if content_layer_ is null as this is not directly connected to if there is a frame to evict. Bug: 959914 Change-Id: I3f83036d9a5ae2c734dfca720115d1faf4278c87 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1596571 Reviewed-by: Eric Karl <ericrk@chromium.org> Commit-Queue: Joel Klinghed <the_jk@opera.com> Cr-Commit-Position: refs/heads/master@{#657483}
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.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .