summaryrefslogtreecommitdiffstats
path: root/cc/layers/layer_impl.cc
diff options
context:
space:
mode:
authordanakj <danakj@chromium.org>2015-01-29 09:56:54 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-29 17:57:40 +0000
commit0cf9539d2a86d2a666d53c8e5154a8382a964370 (patch)
treea7aa39f911380bcbd9545abb5fc55e374e02e6a0 /cc/layers/layer_impl.cc
parentb20d522bf011f3715ed81e1c19775bed1283ddfd (diff)
downloadchromium_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.cc1
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() {