OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1075 // change. So, capture the iterator position from the end of the | 1075 // change. So, capture the iterator position from the end of the |
1076 // list, and restore it after the change. | 1076 // list, and restore it after the change. |
1077 size_t position_from_end = frame->render_passes.size() - it; | 1077 size_t position_from_end = frame->render_passes.size() - it; |
1078 RemoveRenderPassesRecursive(render_pass_quad->render_pass_id, frame); | 1078 RemoveRenderPassesRecursive(render_pass_quad->render_pass_id, frame); |
1079 it = frame->render_passes.size() - position_from_end; | 1079 it = frame->render_passes.size() - position_from_end; |
1080 DCHECK_GE(frame->render_passes.size(), position_from_end); | 1080 DCHECK_GE(frame->render_passes.size(), position_from_end); |
1081 } | 1081 } |
1082 } | 1082 } |
1083 } | 1083 } |
1084 | 1084 |
1085 DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame, | 1085 DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) { |
1086 const gfx::Rect& damage_rect) { | |
1087 TRACE_EVENT1("cc", | 1086 TRACE_EVENT1("cc", |
1088 "LayerTreeHostImpl::PrepareToDraw", | 1087 "LayerTreeHostImpl::PrepareToDraw", |
1089 "SourceFrameNumber", | 1088 "SourceFrameNumber", |
1090 active_tree_->source_frame_number()); | 1089 active_tree_->source_frame_number()); |
1091 | 1090 |
1092 if (need_to_update_visible_tiles_before_draw_ && | 1091 if (need_to_update_visible_tiles_before_draw_ && |
1093 tile_manager_ && tile_manager_->UpdateVisibleTiles()) { | 1092 tile_manager_ && tile_manager_->UpdateVisibleTiles()) { |
1094 DidInitializeVisibleTile(); | 1093 DidInitializeVisibleTile(); |
1095 } | 1094 } |
1096 need_to_update_visible_tiles_before_draw_ = true; | 1095 need_to_update_visible_tiles_before_draw_ = true; |
1097 | 1096 |
1098 active_tree_->UpdateDrawProperties(); | 1097 active_tree_->UpdateDrawProperties(); |
1099 | 1098 |
1100 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); | 1099 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); |
1101 frame->render_passes.clear(); | 1100 frame->render_passes.clear(); |
1102 frame->render_passes_by_id.clear(); | 1101 frame->render_passes_by_id.clear(); |
1103 frame->will_draw_layers.clear(); | 1102 frame->will_draw_layers.clear(); |
1104 frame->contains_incomplete_tile = false; | 1103 frame->contains_incomplete_tile = false; |
1105 frame->has_no_damage = false; | 1104 frame->has_no_damage = false; |
1106 | 1105 |
1107 gfx::Rect device_viewport_damage_rect(damage_rect); | |
1108 if (active_tree_->root_layer()) { | 1106 if (active_tree_->root_layer()) { |
1109 device_viewport_damage_rect.Union(viewport_damage_rect_); | 1107 gfx::Rect device_viewport_damage_rect = viewport_damage_rect_; |
1110 viewport_damage_rect_ = gfx::Rect(); | 1108 viewport_damage_rect_ = gfx::Rect(); |
1111 | 1109 |
1112 active_tree_->root_layer()->render_surface()->damage_tracker()-> | 1110 active_tree_->root_layer()->render_surface()->damage_tracker()-> |
1113 AddDamageNextUpdate(device_viewport_damage_rect); | 1111 AddDamageNextUpdate(device_viewport_damage_rect); |
1114 } | 1112 } |
1115 | 1113 |
1116 DrawResult draw_result = CalculateRenderPasses(frame); | 1114 DrawResult draw_result = CalculateRenderPasses(frame); |
1117 if (draw_result != DRAW_SUCCESS) { | 1115 if (draw_result != DRAW_SUCCESS) { |
1118 DCHECK(!output_surface_->capabilities() | 1116 DCHECK(!output_surface_->capabilities() |
1119 .draw_and_swap_full_viewport_every_frame); | 1117 .draw_and_swap_full_viewport_every_frame); |
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1595 // TODO(jamesr): The renderer_ check is needed to make some of the | 1593 // TODO(jamesr): The renderer_ check is needed to make some of the |
1596 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or | 1594 // LayerTreeHostContextTest tests pass, but shouldn't be necessary (or |
1597 // important) in production. We should adjust the test to not need this. | 1595 // important) in production. We should adjust the test to not need this. |
1598 if (renderer_) | 1596 if (renderer_) |
1599 client_->DidLoseOutputSurfaceOnImplThread(); | 1597 client_->DidLoseOutputSurfaceOnImplThread(); |
1600 #if DCHECK_IS_ON | 1598 #if DCHECK_IS_ON |
1601 did_lose_called_ = true; | 1599 did_lose_called_ = true; |
1602 #endif | 1600 #endif |
1603 } | 1601 } |
1604 | 1602 |
1605 void LayerTreeHostImpl::Readback(void* pixels, | |
1606 const gfx::Rect& rect_in_device_viewport) { | |
1607 DCHECK(renderer_); | |
1608 renderer_->GetFramebufferPixels(pixels, rect_in_device_viewport); | |
1609 } | |
1610 | |
1611 bool LayerTreeHostImpl::HaveRootScrollLayer() const { | 1603 bool LayerTreeHostImpl::HaveRootScrollLayer() const { |
1612 return !!InnerViewportScrollLayer(); | 1604 return !!InnerViewportScrollLayer(); |
1613 } | 1605 } |
1614 | 1606 |
1615 LayerImpl* LayerTreeHostImpl::RootLayer() const { | 1607 LayerImpl* LayerTreeHostImpl::RootLayer() const { |
1616 return active_tree_->root_layer(); | 1608 return active_tree_->root_layer(); |
1617 } | 1609 } |
1618 | 1610 |
1619 LayerImpl* LayerTreeHostImpl::InnerViewportScrollLayer() const { | 1611 LayerImpl* LayerTreeHostImpl::InnerViewportScrollLayer() const { |
1620 return active_tree_->InnerViewportScrollLayer(); | 1612 return active_tree_->InnerViewportScrollLayer(); |
(...skipping 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3120 swap_promise_monitor_.erase(monitor); | 3112 swap_promise_monitor_.erase(monitor); |
3121 } | 3113 } |
3122 | 3114 |
3123 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { | 3115 void LayerTreeHostImpl::NotifySwapPromiseMonitorsOfSetNeedsRedraw() { |
3124 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); | 3116 std::set<SwapPromiseMonitor*>::iterator it = swap_promise_monitor_.begin(); |
3125 for (; it != swap_promise_monitor_.end(); it++) | 3117 for (; it != swap_promise_monitor_.end(); it++) |
3126 (*it)->OnSetNeedsRedrawOnImpl(); | 3118 (*it)->OnSetNeedsRedrawOnImpl(); |
3127 } | 3119 } |
3128 | 3120 |
3129 } // namespace cc | 3121 } // namespace cc |
OLD | NEW |