Descriptioncc::SurfaceDependencyTracker should not crash when a Display goes away
Previously, SurfaceDependencyTracker was a BeginFrameObserver that
directly observed BeginFrames from the first display. This is a problem
if the first display goes away. This CL solves this problem by making
SurfaceDependencyTracker observe an independent
"PrimaryBeginFrameSource" instead. MojoFrameSinkManager owns
SurfaceDependencyTracker and the PrimaryBeginFrameSource. When
SurfaceDependencyTracker needs BeginFrames, that request goes to
PrimaryBeginFrameSource which then adds itself as a BeginFrameObserver
to the primary BeginFrameSource.
When the primary BeginFrameSource goes away, PrimaryBeginFrameSource
removes itself as an observer and, if necessary, adds itself as an
observer arbitrarily to another BeginFrameSource. Future BeginFrames
get forwarded from the PrimaryBeginFrameSource to
SurfaceDependencyTracker.
BUG=672962
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel
Review-Url: https://codereview.chromium.org/2880023002
Cr-Original-Commit-Position: refs/heads/master@{#474539}
Committed: https://chromium.googlesource.com/chromium/src/+/b520968f4ac40fb89ce25329134b388ca42cca12
Review-Url: https://codereview.chromium.org/2880023002
Cr-Commit-Position: refs/heads/master@{#474783}
Committed: https://chromium.googlesource.com/chromium/src/+/d71466ad118aca05aa347c9766f80a5f77528588
Patch Set 1 #Patch Set 2 : Updated #Patch Set 3 : Remove unnecessary change #Patch Set 4 : Added an extra comment #Patch Set 5 : Fix antoher issue #Patch Set 6 : Cleanup #Patch Set 7 : Remove stuff #Patch Set 8 : Updated #Patch Set 9 : Use PrimaryBeginFrameSource #Patch Set 10 : Added unit test #Patch Set 11 : Fixed unit tests #Patch Set 12 : Fix erase in SurfaceDependencyTracker #Patch Set 13 : The right fix #Patch Set 14 : Remove unnecessary change #Patch Set 15 : StrictMock => NiceMock #
Total comments: 6
Patch Set 16 : Addressed Enne's comments #Patch Set 17 : Fixed flake #Patch Set 18 : Fixed typo #Patch Set 19 : Fix LayerTreeHostImpl unit tests #Messages
Total messages: 82 (62 generated)
|