diff options
author | ccameron <ccameron@chromium.org> | 2016-02-09 16:14:08 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-10 00:15:33 +0000 |
commit | 3756dcea2132ee864484660e521ed8149ff31763 (patch) | |
tree | abc8d3b288d263fd510257e73e312b7fe0cb0aa0 /ipc/ipc_message_null_macros.h | |
parent | 9fa59e8809740d5364b46e81f5503d1c7c90dd57 (diff) | |
download | chromium_src-3756dcea2132ee864484660e521ed8149ff31763.zip chromium_src-3756dcea2132ee864484660e521ed8149ff31763.tar.gz chromium_src-3756dcea2132ee864484660e521ed8149ff31763.tar.bz2 |
Mac Overlays: Fix blank white hangs
The issue is as follows:
We rebuild the CALayerTree based on the previous frame's CALayerTree,
trying to change as few properties as possible (cause redundant updates
waste CPU time).
Among the things we assume is that the root of previous frame's
CALayerTree is attached to the ImageTransportSurfaceMac::ca_root_layer_.
So, if we re-use the previous frame's CALayerTree, we will not re-attach
it to ImageTransportSurfaceMac::ca_root_layer_.
There is a bug where, if ImageTransportSurfaceMac gets no
CALayerOverlays and no OverlayPlanes, it will just leave the previous
frame's CALayerTree hanging out in
ImageTransportSurfaceMac::current_ca_layer_tree_, but it will disconnect
it from ImageTransportSurfaceMac::ca_root_layer_. As a consequence, the
next frame that has a CALayerOverlay will go and build its tree off of
ImageTransportSurfaceMac::current_ca_layer_tree_, assuming that it is
still connected to ImageTransportSurfaceMac::ca_root_layer_, which it
isn't.
And then we never see any new frames. The same bug also exists for
ImageTransportSurfaceMac::current_partial_damage_tree_.
The fix is to blow away
ImageTransportSurfaceMac::current_partial_damage_tree_ and
ImageTransportSurfaceMac::current_ca_layer_tree when we get a blank
frame.
BUG=583805
Review URL: https://codereview.chromium.org/1684713003
Cr-Commit-Position: refs/heads/master@{#374542}
Diffstat (limited to 'ipc/ipc_message_null_macros.h')
0 files changed, 0 insertions, 0 deletions