diff options
author | danakj <danakj@chromium.org> | 2015-01-29 09:56:54 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-29 17:57:40 +0000 |
commit | 0cf9539d2a86d2a666d53c8e5154a8382a964370 (patch) | |
tree | a7aa39f911380bcbd9545abb5fc55e374e02e6a0 /cc/layers/layer_impl.cc | |
parent | b20d522bf011f3715ed81e1c19775bed1283ddfd (diff) | |
download | chromium_src-0cf9539d2a86d2a666d53c8e5154a8382a964370.zip chromium_src-0cf9539d2a86d2a666d53c8e5154a8382a964370.tar.gz chromium_src-0cf9539d2a86d2a666d53c8e5154a8382a964370.tar.bz2 |
cc: Dirty the RenderSurfaceLayerList when taking copy requests.
When removing copy requests from a LayerImpl to fulfill the request,
this changes the RenderSurfaceLayerList that CalculateDrawProperties
would output. In particular, the layer would no longer keep itself as a
render target.
Since we fail to do this, the layer becomes !HasCopyRequest(), but keeps
itself as a target in the RenderSurfaceLayerList. Then when we go to
draw again (due to an animation or the like?) we skip appending the
layer's RenderPass since the subtree is hidden, but the layer is still
in the RenderSurfaceLayerList because we didn't recompute draw properties
and the layer copy request was keeping the hidden layer in the list.
This cognitive dissonance causes us to use a null RenderPass as
the target_render_pass in CalculateRenderPasses, which causes a crash as
soon as the (hidden) layer tries to append quads to the null surface.
R=vmpstr, weiliangc@chromium.org
BUG=439649
Review URL: https://codereview.chromium.org/883123003
Cr-Commit-Position: refs/heads/master@{#313733}
Diffstat (limited to 'cc/layers/layer_impl.cc')
-rw-r--r-- | cc/layers/layer_impl.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc index d9dee10..b090246 100644 --- a/cc/layers/layer_impl.cc +++ b/cc/layers/layer_impl.cc @@ -237,6 +237,7 @@ void LayerImpl::TakeCopyRequestsAndTransformToTarget( } layer_tree_impl()->RemoveLayerWithCopyOutputRequest(this); + layer_tree_impl()->set_needs_update_draw_properties(); } void LayerImpl::ClearRenderSurfaceLayerList() { |