Chromium Code Reviews| 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 30de9244e1f9f394e5109c14b6bb4f78b37dfbd6..a7fa0b4b3eec4272d2717ab1c205d4fa4afffced 100644 |
| --- a/cc/trees/layer_tree_host_impl.cc |
| +++ b/cc/trees/layer_tree_host_impl.cc |
| @@ -767,7 +767,9 @@ static RenderPass* FindRenderPassById(const RenderPassList& list, |
| return it == list.end() ? nullptr : it->get(); |
| } |
| -DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
| +DrawResult LayerTreeHostImpl::CalculateRenderPasses( |
| + FrameData* frame, |
| + bool handle_visibility_changed) { |
| DCHECK(frame->render_passes.empty()); |
| DCHECK(CanDraw()); |
| DCHECK(!active_tree_->LayerListIsEmpty()); |
| @@ -789,7 +791,13 @@ DrawResult LayerTreeHostImpl::CalculateRenderPasses(FrameData* frame) { |
| if (root_surface_has_contributing_layers && |
| root_surface_has_no_visible_damage && |
| !active_tree_->property_trees()->effect_tree.HasCopyRequests() && |
| - !resources_must_be_resent && !hud_wants_to_draw_) { |
| + !resources_must_be_resent && !hud_wants_to_draw_ && |
| + // When touch handle visibility changes there is no visible damage |
| + // because touch handles are composited in the browser. However we |
| + // still want the browser to be notified that the handles changed |
| + // through the |ViewHostMsg_SwapCompositorFrame| IPC so we keep |
| + // track of handle visibility changes through |handle_visibility_changed|. |
| + !handle_visibility_changed) { |
| TRACE_EVENT0("cc", |
| "LayerTreeHostImpl::CalculateRenderPasses::EmptyDamageRect"); |
| frame->has_no_damage = true; |
| @@ -1097,7 +1105,8 @@ DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) { |
| device_viewport_damage_rect); |
| } |
| - DrawResult draw_result = CalculateRenderPasses(frame); |
| + DrawResult draw_result = CalculateRenderPasses( |
| + frame, active_tree_->GetAndResetHandleVisibilityChanged()); |
|
danakj
2016/10/21 20:53:33
can you call this from inside CalculateRenderPasse
amaralp
2016/10/26 05:03:40
Done
|
| if (draw_result != DRAW_SUCCESS) { |
| DCHECK(!resourceless_software_draw_); |
| return draw_result; |