| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index 0b425615234e5de21a23b17ea3fab17dc04e50e8..cb38b8c453f710102e03fdc2acd79090961c6ddc 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -577,6 +577,9 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
|
| // due to an impl-animation, we drop the frame to avoid flashing due to the
|
| // texture suddenly appearing in the future.
|
| bool draw_frame = true;
|
| + // When we have a bitmap request for a layer id, we need to draw no matter
|
| + // what, as the layer may disappear after this frame.
|
| + bool have_bitmap_request = false;
|
|
|
| int layers_drawn = 0;
|
|
|
| @@ -595,7 +598,12 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
|
|
|
| AppendQuadsData append_quads_data(target_render_pass->id);
|
|
|
| - if (it.represents_contributing_render_surface()) {
|
| + if (it.represents_target_render_surface()) {
|
| + if (it->HasRequestCopyCallback()) {
|
| + have_bitmap_request = true;
|
| + it->TakeRequestCopyCallbacks(&target_render_pass->copy_callbacks);
|
| + }
|
| + } else if (it.represents_contributing_render_surface()) {
|
| RenderPass::Id contributing_render_pass_id =
|
| it->render_surface()->RenderPassId();
|
| RenderPass* contributing_render_pass =
|
| @@ -671,6 +679,9 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
|
| occlusion_tracker.LeaveLayer(it);
|
| }
|
|
|
| + if (have_bitmap_request)
|
| + draw_frame = true;
|
| +
|
| rendering_stats_instrumentation_->AddLayersDrawn(layers_drawn);
|
|
|
| #ifndef NDEBUG
|
| @@ -693,6 +704,8 @@ bool LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) {
|
|
|
| if (draw_frame)
|
| occlusion_tracker.overdraw_metrics()->RecordMetrics(this);
|
| + else
|
| + DCHECK(!have_bitmap_request);
|
|
|
| RemoveRenderPasses(CullRenderPassesWithNoQuads(), frame);
|
| renderer_->DecideRenderPassAllocationsForFrame(frame->render_passes);
|
|
|