Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(208)

Side by Side Diff: cc/trees/layer_tree_host.cc

Issue 754433003: Update from https://crrev.com/305340 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <stack> 8 #include <stack>
9 #include <string> 9 #include <string>
10 10
11 #include "base/atomic_sequence_num.h" 11 #include "base/atomic_sequence_num.h"
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/debug/trace_event.h" 14 #include "base/debug/trace_event.h"
15 #include "base/debug/trace_event_argument.h" 15 #include "base/debug/trace_event_argument.h"
16 #include "base/message_loop/message_loop.h" 16 #include "base/message_loop/message_loop.h"
17 #include "base/metrics/histogram.h" 17 #include "base/metrics/histogram.h"
18 #include "base/stl_util.h" 18 #include "base/stl_util.h"
19 #include "base/strings/string_number_conversions.h" 19 #include "base/strings/string_number_conversions.h"
20 #include "cc/animation/animation_registrar.h" 20 #include "cc/animation/animation_registrar.h"
21 #include "cc/animation/layer_animation_controller.h" 21 #include "cc/animation/layer_animation_controller.h"
22 #include "cc/base/math_util.h" 22 #include "cc/base/math_util.h"
23 #include "cc/debug/devtools_instrumentation.h" 23 #include "cc/debug/devtools_instrumentation.h"
24 #include "cc/debug/rendering_stats_instrumentation.h" 24 #include "cc/debug/rendering_stats_instrumentation.h"
25 #include "cc/input/layer_selection_bound.h" 25 #include "cc/input/layer_selection_bound.h"
26 #include "cc/input/page_scale_animation.h"
26 #include "cc/input/top_controls_manager.h" 27 #include "cc/input/top_controls_manager.h"
27 #include "cc/layers/heads_up_display_layer.h" 28 #include "cc/layers/heads_up_display_layer.h"
28 #include "cc/layers/heads_up_display_layer_impl.h" 29 #include "cc/layers/heads_up_display_layer_impl.h"
29 #include "cc/layers/layer.h" 30 #include "cc/layers/layer.h"
30 #include "cc/layers/layer_iterator.h" 31 #include "cc/layers/layer_iterator.h"
31 #include "cc/layers/painted_scrollbar_layer.h" 32 #include "cc/layers/painted_scrollbar_layer.h"
32 #include "cc/layers/render_surface.h" 33 #include "cc/layers/render_surface.h"
33 #include "cc/resources/prioritized_resource_manager.h" 34 #include "cc/resources/prioritized_resource_manager.h"
34 #include "cc/resources/ui_resource_request.h" 35 #include "cc/resources/ui_resource_request.h"
35 #include "cc/scheduler/begin_frame_source.h" 36 #include "cc/scheduler/begin_frame_source.h"
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 DCHECK(swap_promise_monitor_.empty()); 191 DCHECK(swap_promise_monitor_.empty());
191 192
192 BreakSwapPromises(SwapPromise::COMMIT_FAILS); 193 BreakSwapPromises(SwapPromise::COMMIT_FAILS);
193 194
194 if (proxy_) { 195 if (proxy_) {
195 DCHECK(proxy_->IsMainThread()); 196 DCHECK(proxy_->IsMainThread());
196 proxy_->Stop(); 197 proxy_->Stop();
197 } 198 }
198 199
199 // We must clear any pointers into the layer tree prior to destroying it. 200 // We must clear any pointers into the layer tree prior to destroying it.
200 RegisterViewportLayers(NULL, NULL, NULL); 201 RegisterViewportLayers(NULL, NULL, NULL, NULL);
201 202
202 if (root_layer_.get()) { 203 if (root_layer_.get()) {
203 // The layer tree must be destroyed before the layer tree host. We've 204 // The layer tree must be destroyed before the layer tree host. We've
204 // made a contract with our animation controllers that the registrar 205 // made a contract with our animation controllers that the registrar
205 // will outlive them, and we must make good. 206 // will outlive them, and we must make good.
206 root_layer_ = NULL; 207 root_layer_ = NULL;
207 } 208 }
208 } 209 }
209 210
210 void LayerTreeHost::SetLayerTreeHostClientReady() { 211 void LayerTreeHost::SetLayerTreeHostClientReady() {
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 sync_tree->root_layer(), hud_layer_->id()); 341 sync_tree->root_layer(), hud_layer_->id());
341 sync_tree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>(hud_impl)); 342 sync_tree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>(hud_impl));
342 } else { 343 } else {
343 sync_tree->set_hud_layer(NULL); 344 sync_tree->set_hud_layer(NULL);
344 } 345 }
345 346
346 sync_tree->set_background_color(background_color_); 347 sync_tree->set_background_color(background_color_);
347 sync_tree->set_has_transparent_background(has_transparent_background_); 348 sync_tree->set_has_transparent_background(has_transparent_background_);
348 349
349 if (page_scale_layer_.get() && inner_viewport_scroll_layer_.get()) { 350 if (page_scale_layer_.get() && inner_viewport_scroll_layer_.get()) {
350 sync_tree->SetViewportLayersFromIds(page_scale_layer_->id(), 351 sync_tree->SetViewportLayersFromIds(
351 inner_viewport_scroll_layer_->id(), 352 overscroll_elasticity_layer_.get() ? overscroll_elasticity_layer_->id()
352 outer_viewport_scroll_layer_.get() 353 : Layer::INVALID_ID,
353 ? outer_viewport_scroll_layer_->id() 354 page_scale_layer_->id(), inner_viewport_scroll_layer_->id(),
354 : Layer::INVALID_ID); 355 outer_viewport_scroll_layer_.get() ? outer_viewport_scroll_layer_->id()
356 : Layer::INVALID_ID);
355 } else { 357 } else {
356 sync_tree->ClearViewportLayers(); 358 sync_tree->ClearViewportLayers();
357 } 359 }
358 360
359 sync_tree->RegisterSelection(selection_start_, selection_end_); 361 sync_tree->RegisterSelection(selection_start_, selection_end_);
360 362
361 float page_scale_delta = 363 float page_scale_delta =
362 sync_tree->page_scale_delta() / sync_tree->sent_page_scale_delta(); 364 sync_tree->page_scale_delta() / sync_tree->sent_page_scale_delta();
363 sync_tree->SetPageScaleValues(page_scale_factor_, 365 sync_tree->SetPageScaleValues(page_scale_factor_,
364 min_page_scale_factor_, 366 min_page_scale_factor_,
365 max_page_scale_factor_, 367 max_page_scale_factor_,
366 page_scale_delta); 368 page_scale_delta);
367 sync_tree->set_sent_page_scale_delta(1.f); 369 sync_tree->set_sent_page_scale_delta(1.f);
368 370
369 sync_tree->PassSwapPromises(&swap_promise_list_); 371 sync_tree->PassSwapPromises(&swap_promise_list_);
370 372
371 sync_tree->set_top_controls_layout_height(top_controls_layout_height_); 373 sync_tree->set_top_controls_layout_height(top_controls_layout_height_);
372 sync_tree->set_top_controls_content_offset(top_controls_content_offset_); 374 sync_tree->set_top_controls_content_offset(top_controls_content_offset_);
373 sync_tree->set_top_controls_delta(sync_tree->top_controls_delta() - 375 sync_tree->set_top_controls_delta(sync_tree->top_controls_delta() -
374 sync_tree->sent_top_controls_delta()); 376 sync_tree->sent_top_controls_delta());
375 sync_tree->set_sent_top_controls_delta(0.f); 377 sync_tree->set_sent_top_controls_delta(0.f);
376 378
377 host_impl->SetUseGpuRasterization(UseGpuRasterization()); 379 host_impl->SetUseGpuRasterization(UseGpuRasterization());
378 RecordGpuRasterizationHistogram(); 380 RecordGpuRasterizationHistogram();
379 381
380 host_impl->SetViewportSize(device_viewport_size_); 382 host_impl->SetViewportSize(device_viewport_size_);
381 host_impl->SetDeviceScaleFactor(device_scale_factor_); 383 host_impl->SetDeviceScaleFactor(device_scale_factor_);
382 host_impl->SetDebugState(debug_state_); 384 host_impl->SetDebugState(debug_state_);
383 if (pending_page_scale_animation_) { 385 if (pending_page_scale_animation_) {
384 sync_tree->SetPageScaleAnimation( 386 sync_tree->SetPendingPageScaleAnimation(
385 pending_page_scale_animation_->target_offset, 387 pending_page_scale_animation_.Pass());
386 pending_page_scale_animation_->use_anchor,
387 pending_page_scale_animation_->scale,
388 pending_page_scale_animation_->duration);
389 pending_page_scale_animation_ = nullptr;
390 } 388 }
391 389
392 if (!ui_resource_request_queue_.empty()) { 390 if (!ui_resource_request_queue_.empty()) {
393 sync_tree->set_ui_resource_request_queue(ui_resource_request_queue_); 391 sync_tree->set_ui_resource_request_queue(ui_resource_request_queue_);
394 ui_resource_request_queue_.clear(); 392 ui_resource_request_queue_.clear();
395 } 393 }
396 if (overhang_ui_resource_) { 394 if (overhang_ui_resource_) {
397 host_impl->SetOverhangUIResource( 395 host_impl->SetOverhangUIResource(
398 overhang_ui_resource_->id(), 396 overhang_ui_resource_->id(),
399 GetUIResourceSize(overhang_ui_resource_->id())); 397 GetUIResourceSize(overhang_ui_resource_->id()));
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 visible_ = visible; 715 visible_ = visible;
718 if (!visible) 716 if (!visible)
719 ReduceMemoryUsage(); 717 ReduceMemoryUsage();
720 proxy_->SetVisible(visible); 718 proxy_->SetVisible(visible);
721 } 719 }
722 720
723 void LayerTreeHost::StartPageScaleAnimation(const gfx::Vector2d& target_offset, 721 void LayerTreeHost::StartPageScaleAnimation(const gfx::Vector2d& target_offset,
724 bool use_anchor, 722 bool use_anchor,
725 float scale, 723 float scale,
726 base::TimeDelta duration) { 724 base::TimeDelta duration) {
727 pending_page_scale_animation_.reset(new PendingPageScaleAnimation); 725 pending_page_scale_animation_.reset(
728 pending_page_scale_animation_->target_offset = target_offset; 726 new PendingPageScaleAnimation(
729 pending_page_scale_animation_->use_anchor = use_anchor; 727 target_offset,
730 pending_page_scale_animation_->scale = scale; 728 use_anchor,
731 pending_page_scale_animation_->duration = duration; 729 scale,
730 duration));
732 731
733 SetNeedsCommit(); 732 SetNeedsCommit();
734 } 733 }
735 734
736 void LayerTreeHost::NotifyInputThrottledUntilCommit() { 735 void LayerTreeHost::NotifyInputThrottledUntilCommit() {
737 proxy_->NotifyInputThrottledUntilCommit(); 736 proxy_->NotifyInputThrottledUntilCommit();
738 } 737 }
739 738
740 void LayerTreeHost::Composite(base::TimeTicks frame_begin_time) { 739 void LayerTreeHost::Composite(base::TimeTicks frame_begin_time) {
741 DCHECK(!proxy_->HasImplThread()); 740 DCHECK(!proxy_->HasImplThread());
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 gfx::Size LayerTreeHost::GetUIResourceSize(UIResourceId uid) const { 1280 gfx::Size LayerTreeHost::GetUIResourceSize(UIResourceId uid) const {
1282 UIResourceClientMap::const_iterator iter = ui_resource_client_map_.find(uid); 1281 UIResourceClientMap::const_iterator iter = ui_resource_client_map_.find(uid);
1283 if (iter == ui_resource_client_map_.end()) 1282 if (iter == ui_resource_client_map_.end())
1284 return gfx::Size(); 1283 return gfx::Size();
1285 1284
1286 const UIResourceClientData& data = iter->second; 1285 const UIResourceClientData& data = iter->second;
1287 return data.size; 1286 return data.size;
1288 } 1287 }
1289 1288
1290 void LayerTreeHost::RegisterViewportLayers( 1289 void LayerTreeHost::RegisterViewportLayers(
1290 scoped_refptr<Layer> overscroll_elasticity_layer,
1291 scoped_refptr<Layer> page_scale_layer, 1291 scoped_refptr<Layer> page_scale_layer,
1292 scoped_refptr<Layer> inner_viewport_scroll_layer, 1292 scoped_refptr<Layer> inner_viewport_scroll_layer,
1293 scoped_refptr<Layer> outer_viewport_scroll_layer) { 1293 scoped_refptr<Layer> outer_viewport_scroll_layer) {
1294 overscroll_elasticity_layer_ = overscroll_elasticity_layer;
1294 page_scale_layer_ = page_scale_layer; 1295 page_scale_layer_ = page_scale_layer;
1295 inner_viewport_scroll_layer_ = inner_viewport_scroll_layer; 1296 inner_viewport_scroll_layer_ = inner_viewport_scroll_layer;
1296 outer_viewport_scroll_layer_ = outer_viewport_scroll_layer; 1297 outer_viewport_scroll_layer_ = outer_viewport_scroll_layer;
1297 } 1298 }
1298 1299
1299 void LayerTreeHost::RegisterSelection(const LayerSelectionBound& start, 1300 void LayerTreeHost::RegisterSelection(const LayerSelectionBound& start,
1300 const LayerSelectionBound& end) { 1301 const LayerSelectionBound& end) {
1301 if (selection_start_ == start && selection_end_ == end) 1302 if (selection_start_ == start && selection_end_ == end)
1302 return; 1303 return;
1303 1304
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1345 } 1346 }
1346 1347
1347 void LayerTreeHost::set_surface_id_namespace(uint32_t id_namespace) { 1348 void LayerTreeHost::set_surface_id_namespace(uint32_t id_namespace) {
1348 surface_id_namespace_ = id_namespace; 1349 surface_id_namespace_ = id_namespace;
1349 } 1350 }
1350 1351
1351 SurfaceSequence LayerTreeHost::CreateSurfaceSequence() { 1352 SurfaceSequence LayerTreeHost::CreateSurfaceSequence() {
1352 return SurfaceSequence(surface_id_namespace_, next_surface_sequence_++); 1353 return SurfaceSequence(surface_id_namespace_, next_surface_sequence_++);
1353 } 1354 }
1354 1355
1356 void LayerTreeHost::SetChildrenNeedBeginFrames(
1357 bool children_need_begin_frames) const {
1358 proxy_->SetChildrenNeedBeginFrames(children_need_begin_frames);
1359 }
1360
1361 void LayerTreeHost::SendBeginFramesToChildren(
1362 const BeginFrameArgs& args) const {
1363 client_->SendBeginFramesToChildren(args);
1364 }
1365
1355 } // namespace cc 1366 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698