| 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 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 rendering_stats_instrumentation)); | 152 rendering_stats_instrumentation)); |
| 153 } | 153 } |
| 154 | 154 |
| 155 LayerTreeHostImpl::LayerTreeHostImpl( | 155 LayerTreeHostImpl::LayerTreeHostImpl( |
| 156 const LayerTreeSettings& settings, | 156 const LayerTreeSettings& settings, |
| 157 LayerTreeHostImplClient* client, | 157 LayerTreeHostImplClient* client, |
| 158 Proxy* proxy, | 158 Proxy* proxy, |
| 159 RenderingStatsInstrumentation* rendering_stats_instrumentation) | 159 RenderingStatsInstrumentation* rendering_stats_instrumentation) |
| 160 : client_(client), | 160 : client_(client), |
| 161 proxy_(proxy), | 161 proxy_(proxy), |
| 162 input_handler_client_(NULL), |
| 162 did_lock_scrolling_layer_(false), | 163 did_lock_scrolling_layer_(false), |
| 163 should_bubble_scrolls_(false), | 164 should_bubble_scrolls_(false), |
| 164 wheel_scrolling_(false), | 165 wheel_scrolling_(false), |
| 165 root_layer_scroll_offset_delegate_(NULL), | 166 root_layer_scroll_offset_delegate_(NULL), |
| 166 settings_(settings), | 167 settings_(settings), |
| 167 overdraw_bottom_height_(0.f), | 168 overdraw_bottom_height_(0.f), |
| 168 device_scale_factor_(1.f), | 169 device_scale_factor_(1.f), |
| 169 visible_(true), | 170 visible_(true), |
| 170 managed_memory_policy_( | 171 managed_memory_policy_( |
| 171 PrioritizedResourceManager::DefaultMemoryAllocationLimit(), | 172 PrioritizedResourceManager::DefaultMemoryAllocationLimit(), |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 TRACE_EVENT_OBJECT_CREATED_WITH_ID( | 204 TRACE_EVENT_OBJECT_CREATED_WITH_ID( |
| 204 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerTreeHostImpl", this); | 205 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerTreeHostImpl", this); |
| 205 } | 206 } |
| 206 | 207 |
| 207 LayerTreeHostImpl::~LayerTreeHostImpl() { | 208 LayerTreeHostImpl::~LayerTreeHostImpl() { |
| 208 DCHECK(proxy_->IsImplThread()); | 209 DCHECK(proxy_->IsImplThread()); |
| 209 TRACE_EVENT0("cc", "LayerTreeHostImpl::~LayerTreeHostImpl()"); | 210 TRACE_EVENT0("cc", "LayerTreeHostImpl::~LayerTreeHostImpl()"); |
| 210 TRACE_EVENT_OBJECT_DELETED_WITH_ID( | 211 TRACE_EVENT_OBJECT_DELETED_WITH_ID( |
| 211 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerTreeHostImpl", this); | 212 TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerTreeHostImpl", this); |
| 212 | 213 |
| 214 if (input_handler_client_) { |
| 215 input_handler_client_->WillShutdown(); |
| 216 input_handler_client_ = NULL; |
| 217 } |
| 218 |
| 213 if (active_tree_->root_layer()) { | 219 if (active_tree_->root_layer()) { |
| 214 ClearRenderSurfaces(); | 220 ClearRenderSurfaces(); |
| 215 // The layer trees must be destroyed before the layer tree host. We've | 221 // The layer trees must be destroyed before the layer tree host. We've |
| 216 // made a contract with our animation controllers that the registrar | 222 // made a contract with our animation controllers that the registrar |
| 217 // will outlive them, and we must make good. | 223 // will outlive them, and we must make good. |
| 218 recycle_tree_.reset(); | 224 recycle_tree_.reset(); |
| 219 pending_tree_.reset(); | 225 pending_tree_.reset(); |
| 220 active_tree_.reset(); | 226 active_tree_.reset(); |
| 221 } | 227 } |
| 222 } | 228 } |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 TRACE_EVENT_INSTANT0( | 276 TRACE_EVENT_INSTANT0( |
| 271 "cc", "LayerTreeHostImpl::CanDraw contents textures purged", | 277 "cc", "LayerTreeHostImpl::CanDraw contents textures purged", |
| 272 TRACE_EVENT_SCOPE_THREAD); | 278 TRACE_EVENT_SCOPE_THREAD); |
| 273 return false; | 279 return false; |
| 274 } | 280 } |
| 275 return true; | 281 return true; |
| 276 } | 282 } |
| 277 | 283 |
| 278 void LayerTreeHostImpl::Animate(base::TimeTicks monotonic_time, | 284 void LayerTreeHostImpl::Animate(base::TimeTicks monotonic_time, |
| 279 base::Time wall_clock_time) { | 285 base::Time wall_clock_time) { |
| 286 if (input_handler_client_) |
| 287 input_handler_client_->Animate(monotonic_time); |
| 280 AnimatePageScale(monotonic_time); | 288 AnimatePageScale(monotonic_time); |
| 281 AnimateLayers(monotonic_time, wall_clock_time); | 289 AnimateLayers(monotonic_time, wall_clock_time); |
| 282 AnimateScrollbars(monotonic_time); | 290 AnimateScrollbars(monotonic_time); |
| 283 AnimateTopControls(monotonic_time); | 291 AnimateTopControls(monotonic_time); |
| 284 } | 292 } |
| 285 | 293 |
| 286 void LayerTreeHostImpl::ManageTiles() { | 294 void LayerTreeHostImpl::ManageTiles() { |
| 287 DCHECK(tile_manager_); | 295 DCHECK(tile_manager_); |
| 288 tile_manager_->ManageTiles(); | 296 tile_manager_->ManageTiles(); |
| 289 | 297 |
| (...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 716 if (!output_surface_->ForcedDrawToSoftwareDevice()) | 724 if (!output_surface_->ForcedDrawToSoftwareDevice()) |
| 717 renderer_->DecideRenderPassAllocationsForFrame(frame->render_passes); | 725 renderer_->DecideRenderPassAllocationsForFrame(frame->render_passes); |
| 718 RemoveRenderPasses(CullRenderPassesWithCachedTextures(renderer_.get()), | 726 RemoveRenderPasses(CullRenderPassesWithCachedTextures(renderer_.get()), |
| 719 frame); | 727 frame); |
| 720 | 728 |
| 721 // If we're making a frame to draw, it better have at least one render pass. | 729 // If we're making a frame to draw, it better have at least one render pass. |
| 722 DCHECK(!frame->render_passes.empty()); | 730 DCHECK(!frame->render_passes.empty()); |
| 723 return draw_frame; | 731 return draw_frame; |
| 724 } | 732 } |
| 725 | 733 |
| 734 void LayerTreeHostImpl::MainThreadHasStoppedFlinging() { |
| 735 if (input_handler_client_) |
| 736 input_handler_client_->MainThreadHasStoppedFlinging(); |
| 737 } |
| 738 |
| 726 void LayerTreeHostImpl::UpdateBackgroundAnimateTicking( | 739 void LayerTreeHostImpl::UpdateBackgroundAnimateTicking( |
| 727 bool should_background_tick) { | 740 bool should_background_tick) { |
| 728 bool enabled = should_background_tick && | 741 bool enabled = should_background_tick && |
| 729 !animation_registrar_->active_animation_controllers().empty(); | 742 !animation_registrar_->active_animation_controllers().empty(); |
| 730 | 743 |
| 731 // Lazily create the time_source adapter so that we can vary the interval for | 744 // Lazily create the time_source adapter so that we can vary the interval for |
| 732 // testing. | 745 // testing. |
| 733 if (!time_source_client_adapter_) { | 746 if (!time_source_client_adapter_) { |
| 734 time_source_client_adapter_ = LayerTreeHostImplTimeSourceAdapter::Create( | 747 time_source_client_adapter_ = LayerTreeHostImplTimeSourceAdapter::Create( |
| 735 this, | 748 this, |
| (...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1482 client_->SetNeedsRedrawOnImplThread(); | 1495 client_->SetNeedsRedrawOnImplThread(); |
| 1483 active_tree_->set_needs_update_draw_properties(); | 1496 active_tree_->set_needs_update_draw_properties(); |
| 1484 SetFullRootLayerDamage(); | 1497 SetFullRootLayerDamage(); |
| 1485 } | 1498 } |
| 1486 | 1499 |
| 1487 bool LayerTreeHostImpl::EnsureRenderSurfaceLayerList() { | 1500 bool LayerTreeHostImpl::EnsureRenderSurfaceLayerList() { |
| 1488 active_tree_->UpdateDrawProperties(); | 1501 active_tree_->UpdateDrawProperties(); |
| 1489 return !active_tree_->RenderSurfaceLayerList().empty(); | 1502 return !active_tree_->RenderSurfaceLayerList().empty(); |
| 1490 } | 1503 } |
| 1491 | 1504 |
| 1505 void LayerTreeHostImpl::BindToClient(InputHandlerClient* client) { |
| 1506 DCHECK(input_handler_client_ == NULL); |
| 1507 input_handler_client_ = client; |
| 1508 } |
| 1509 |
| 1492 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin( | 1510 InputHandler::ScrollStatus LayerTreeHostImpl::ScrollBegin( |
| 1493 gfx::Point viewport_point, InputHandler::ScrollInputType type) { | 1511 gfx::Point viewport_point, InputHandler::ScrollInputType type) { |
| 1494 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin"); | 1512 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin"); |
| 1495 | 1513 |
| 1496 if (top_controls_manager_) | 1514 if (top_controls_manager_) |
| 1497 top_controls_manager_->ScrollBegin(); | 1515 top_controls_manager_->ScrollBegin(); |
| 1498 | 1516 |
| 1499 DCHECK(!CurrentlyScrollingLayer()); | 1517 DCHECK(!CurrentlyScrollingLayer()); |
| 1500 ClearCurrentlyScrollingLayer(); | 1518 ClearCurrentlyScrollingLayer(); |
| 1501 | 1519 |
| (...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2169 } | 2187 } |
| 2170 | 2188 |
| 2171 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) { | 2189 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) { |
| 2172 if (debug_state_.continuous_painting != debug_state.continuous_painting) | 2190 if (debug_state_.continuous_painting != debug_state.continuous_painting) |
| 2173 paint_time_counter_->ClearHistory(); | 2191 paint_time_counter_->ClearHistory(); |
| 2174 | 2192 |
| 2175 debug_state_ = debug_state; | 2193 debug_state_ = debug_state; |
| 2176 } | 2194 } |
| 2177 | 2195 |
| 2178 } // namespace cc | 2196 } // namespace cc |
| OLD | NEW |