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

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

Issue 671653005: SetNeedsRedraw directly when updating a visible tile. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: pinchblurmerge-test: nits Created 6 years, 1 month 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
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_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 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 time_source_(time_source) { 231 time_source_(time_source) {
232 time_source_->SetClient(this); 232 time_source_->SetClient(this);
233 } 233 }
234 234
235 LayerTreeHostImpl* layer_tree_host_impl_; 235 LayerTreeHostImpl* layer_tree_host_impl_;
236 scoped_refptr<DelayBasedTimeSource> time_source_; 236 scoped_refptr<DelayBasedTimeSource> time_source_;
237 237
238 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImplTimeSourceAdapter); 238 DISALLOW_COPY_AND_ASSIGN(LayerTreeHostImplTimeSourceAdapter);
239 }; 239 };
240 240
241 LayerTreeHostImpl::FrameData::FrameData() 241 LayerTreeHostImpl::FrameData::FrameData() : has_no_damage(false) {
242 : contains_incomplete_tile(false), has_no_damage(false) {} 242 }
243 243
244 LayerTreeHostImpl::FrameData::~FrameData() {} 244 LayerTreeHostImpl::FrameData::~FrameData() {}
245 245
246 scoped_ptr<LayerTreeHostImpl> LayerTreeHostImpl::Create( 246 scoped_ptr<LayerTreeHostImpl> LayerTreeHostImpl::Create(
247 const LayerTreeSettings& settings, 247 const LayerTreeSettings& settings,
248 LayerTreeHostImplClient* client, 248 LayerTreeHostImplClient* client,
249 Proxy* proxy, 249 Proxy* proxy,
250 RenderingStatsInstrumentation* rendering_stats_instrumentation, 250 RenderingStatsInstrumentation* rendering_stats_instrumentation,
251 SharedBitmapManager* shared_bitmap_manager, 251 SharedBitmapManager* shared_bitmap_manager,
252 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, 252 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 : proxy_->MainThreadTaskRunner())), 297 : proxy_->MainThreadTaskRunner())),
298 max_memory_needed_bytes_(0), 298 max_memory_needed_bytes_(0),
299 zero_budget_(false), 299 zero_budget_(false),
300 device_scale_factor_(1.f), 300 device_scale_factor_(1.f),
301 overhang_ui_resource_id_(0), 301 overhang_ui_resource_id_(0),
302 resourceless_software_draw_(false), 302 resourceless_software_draw_(false),
303 begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()), 303 begin_impl_frame_interval_(BeginFrameArgs::DefaultInterval()),
304 animation_registrar_(AnimationRegistrar::Create()), 304 animation_registrar_(AnimationRegistrar::Create()),
305 rendering_stats_instrumentation_(rendering_stats_instrumentation), 305 rendering_stats_instrumentation_(rendering_stats_instrumentation),
306 micro_benchmark_controller_(this), 306 micro_benchmark_controller_(this),
307 need_to_update_visible_tiles_before_draw_(false),
308 shared_bitmap_manager_(shared_bitmap_manager), 307 shared_bitmap_manager_(shared_bitmap_manager),
309 gpu_memory_buffer_manager_(gpu_memory_buffer_manager), 308 gpu_memory_buffer_manager_(gpu_memory_buffer_manager),
310 id_(id), 309 id_(id),
311 requires_high_res_to_draw_(false) { 310 requires_high_res_to_draw_(false) {
312 DCHECK(proxy_->IsImplThread()); 311 DCHECK(proxy_->IsImplThread());
313 DidVisibilityChange(this, visible_); 312 DidVisibilityChange(this, visible_);
314 animation_registrar_->set_supports_scroll_animations( 313 animation_registrar_->set_supports_scroll_animations(
315 proxy_->SupportsImplScrolling()); 314 proxy_->SupportsImplScrolling());
316 315
317 SetDebugState(settings.initial_debug_state); 316 SetDebugState(settings.initial_debug_state);
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 render_surface_layer->id(), 538 render_surface_layer->id(),
540 render_surface->SurfacePropertyChangedOnlyFromDescendant(), 539 render_surface->SurfacePropertyChangedOnlyFromDescendant(),
541 render_surface->content_rect(), 540 render_surface->content_rect(),
542 render_surface_layer->mask_layer(), 541 render_surface_layer->mask_layer(),
543 render_surface_layer->filters()); 542 render_surface_layer->filters());
544 } 543 }
545 } 544 }
546 545
547 void LayerTreeHostImpl::FrameData::AsValueInto( 546 void LayerTreeHostImpl::FrameData::AsValueInto(
548 base::debug::TracedValue* value) const { 547 base::debug::TracedValue* value) const {
549 value->SetBoolean("contains_incomplete_tile", contains_incomplete_tile);
550 value->SetBoolean("has_no_damage", has_no_damage); 548 value->SetBoolean("has_no_damage", has_no_damage);
551 549
552 // Quad data can be quite large, so only dump render passes if we select 550 // Quad data can be quite large, so only dump render passes if we select
553 // cc.debug.quads. 551 // cc.debug.quads.
554 bool quads_enabled; 552 bool quads_enabled;
555 TRACE_EVENT_CATEGORY_GROUP_ENABLED( 553 TRACE_EVENT_CATEGORY_GROUP_ENABLED(
556 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), &quads_enabled); 554 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), &quads_enabled);
557 if (quads_enabled) { 555 if (quads_enabled) {
558 value->BeginArray("render_passes"); 556 value->BeginArray("render_passes");
559 for (size_t i = 0; i < render_passes.size(); ++i) { 557 for (size_t i = 0; i < render_passes.size(); ++i) {
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 if (append_quads_data.num_missing_tiles) { 887 if (append_quads_data.num_missing_tiles) {
890 bool layer_has_animating_transform = 888 bool layer_has_animating_transform =
891 it->screen_space_transform_is_animating() || 889 it->screen_space_transform_is_animating() ||
892 it->draw_transform_is_animating(); 890 it->draw_transform_is_animating();
893 if (layer_has_animating_transform) 891 if (layer_has_animating_transform)
894 draw_result = DRAW_ABORTED_CHECKERBOARD_ANIMATIONS; 892 draw_result = DRAW_ABORTED_CHECKERBOARD_ANIMATIONS;
895 } 893 }
896 894
897 if (append_quads_data.num_incomplete_tiles || 895 if (append_quads_data.num_incomplete_tiles ||
898 append_quads_data.num_missing_tiles) { 896 append_quads_data.num_missing_tiles) {
899 frame->contains_incomplete_tile = true;
900 if (RequiresHighResToDraw()) 897 if (RequiresHighResToDraw())
901 draw_result = DRAW_ABORTED_MISSING_HIGH_RES_CONTENT; 898 draw_result = DRAW_ABORTED_MISSING_HIGH_RES_CONTENT;
902 } 899 }
903 900
904 occlusion_tracker.LeaveLayer(it); 901 occlusion_tracker.LeaveLayer(it);
905 } 902 }
906 903
907 if (have_copy_request || 904 if (have_copy_request ||
908 output_surface_->capabilities().draw_and_swap_full_viewport_every_frame) 905 output_surface_->capabilities().draw_and_swap_full_viewport_every_frame)
909 draw_result = DRAW_SUCCESS; 906 draw_result = DRAW_SUCCESS;
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 } 1107 }
1111 } 1108 }
1112 } 1109 }
1113 1110
1114 DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) { 1111 DrawResult LayerTreeHostImpl::PrepareToDraw(FrameData* frame) {
1115 TRACE_EVENT1("cc", 1112 TRACE_EVENT1("cc",
1116 "LayerTreeHostImpl::PrepareToDraw", 1113 "LayerTreeHostImpl::PrepareToDraw",
1117 "SourceFrameNumber", 1114 "SourceFrameNumber",
1118 active_tree_->source_frame_number()); 1115 active_tree_->source_frame_number());
1119 1116
1120 if (need_to_update_visible_tiles_before_draw_ && 1117 if (settings().impl_side_painting)
1121 tile_manager_ && tile_manager_->UpdateVisibleTiles()) { 1118 tile_manager_->UpdateVisibleTiles();
1122 DidInitializeVisibleTile();
1123 }
1124 need_to_update_visible_tiles_before_draw_ = true;
1125 1119
1126 UMA_HISTOGRAM_CUSTOM_COUNTS( 1120 UMA_HISTOGRAM_CUSTOM_COUNTS(
1127 "Compositing.NumActiveLayers", active_tree_->NumLayers(), 1, 400, 20); 1121 "Compositing.NumActiveLayers", active_tree_->NumLayers(), 1, 400, 20);
1128 1122
1129 bool ok = active_tree_->UpdateDrawProperties(); 1123 bool ok = active_tree_->UpdateDrawProperties();
1130 DCHECK(ok) << "UpdateDrawProperties failed during draw"; 1124 DCHECK(ok) << "UpdateDrawProperties failed during draw";
1131 1125
1132 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList(); 1126 frame->render_surface_layer_list = &active_tree_->RenderSurfaceLayerList();
1133 frame->render_passes.clear(); 1127 frame->render_passes.clear();
1134 frame->render_passes_by_id.clear(); 1128 frame->render_passes_by_id.clear();
1135 frame->will_draw_layers.clear(); 1129 frame->will_draw_layers.clear();
1136 frame->contains_incomplete_tile = false;
1137 frame->has_no_damage = false; 1130 frame->has_no_damage = false;
1138 1131
1139 if (active_tree_->root_layer()) { 1132 if (active_tree_->root_layer()) {
1140 gfx::Rect device_viewport_damage_rect = viewport_damage_rect_; 1133 gfx::Rect device_viewport_damage_rect = viewport_damage_rect_;
1141 viewport_damage_rect_ = gfx::Rect(); 1134 viewport_damage_rect_ = gfx::Rect();
1142 1135
1143 active_tree_->root_layer()->render_surface()->damage_tracker()-> 1136 active_tree_->root_layer()->render_surface()->damage_tracker()->
1144 AddDamageNextUpdate(device_viewport_damage_rect); 1137 AddDamageNextUpdate(device_viewport_damage_rect);
1145 } 1138 }
1146 1139
(...skipping 10 matching lines...) Expand all
1157 } 1150 }
1158 1151
1159 void LayerTreeHostImpl::EvictTexturesForTesting() { 1152 void LayerTreeHostImpl::EvictTexturesForTesting() {
1160 EnforceManagedMemoryPolicy(ManagedMemoryPolicy(0)); 1153 EnforceManagedMemoryPolicy(ManagedMemoryPolicy(0));
1161 } 1154 }
1162 1155
1163 void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) { 1156 void LayerTreeHostImpl::BlockNotifyReadyToActivateForTesting(bool block) {
1164 NOTREACHED(); 1157 NOTREACHED();
1165 } 1158 }
1166 1159
1167 void LayerTreeHostImpl::DidInitializeVisibleTileForTesting() {
1168 // Add arbitrary damage, to trigger prepare-to-draws.
1169 // Here, setting damage as viewport size, used only for testing.
1170 SetFullRootLayerDamage();
1171 DidInitializeVisibleTile();
1172 }
1173
1174 void LayerTreeHostImpl::ResetTreesForTesting() { 1160 void LayerTreeHostImpl::ResetTreesForTesting() {
1175 if (active_tree_) 1161 if (active_tree_)
1176 active_tree_->DetachLayerTree(); 1162 active_tree_->DetachLayerTree();
1177 active_tree_ = LayerTreeImpl::create(this); 1163 active_tree_ = LayerTreeImpl::create(this);
1178 if (pending_tree_) 1164 if (pending_tree_)
1179 pending_tree_->DetachLayerTree(); 1165 pending_tree_->DetachLayerTree();
1180 pending_tree_ = nullptr; 1166 pending_tree_ = nullptr;
1181 if (recycle_tree_) 1167 if (recycle_tree_)
1182 recycle_tree_->DetachLayerTree(); 1168 recycle_tree_->DetachLayerTree();
1183 recycle_tree_ = nullptr; 1169 recycle_tree_ = nullptr;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1255 DidModifyTilePriorities(); 1241 DidModifyTilePriorities();
1256 } 1242 }
1257 1243
1258 void LayerTreeHostImpl::DidModifyTilePriorities() { 1244 void LayerTreeHostImpl::DidModifyTilePriorities() {
1259 DCHECK(settings_.impl_side_painting); 1245 DCHECK(settings_.impl_side_painting);
1260 // Mark priorities as dirty and schedule a ManageTiles(). 1246 // Mark priorities as dirty and schedule a ManageTiles().
1261 tile_priorities_dirty_ = true; 1247 tile_priorities_dirty_ = true;
1262 client_->SetNeedsManageTilesOnImplThread(); 1248 client_->SetNeedsManageTilesOnImplThread();
1263 } 1249 }
1264 1250
1265 void LayerTreeHostImpl::DidInitializeVisibleTile() {
1266 if (client_ && !client_->IsInsideDraw())
1267 client_->DidInitializeVisibleTileOnImplThread();
1268 }
1269
1270 void LayerTreeHostImpl::GetPictureLayerImplPairs( 1251 void LayerTreeHostImpl::GetPictureLayerImplPairs(
1271 std::vector<PictureLayerImpl::Pair>* layer_pairs) const { 1252 std::vector<PictureLayerImpl::Pair>* layer_pairs) const {
1272 DCHECK(layer_pairs->empty()); 1253 DCHECK(layer_pairs->empty());
1273 for (std::vector<PictureLayerImpl*>::const_iterator it = 1254 for (std::vector<PictureLayerImpl*>::const_iterator it =
1274 picture_layers_.begin(); 1255 picture_layers_.begin();
1275 it != picture_layers_.end(); 1256 it != picture_layers_.end();
1276 ++it) { 1257 ++it) {
1277 PictureLayerImpl* layer = *it; 1258 PictureLayerImpl* layer = *it;
1278 1259
1279 // TODO(vmpstr): Iterators and should handle this instead. crbug.com/381704 1260 // TODO(vmpstr): Iterators and should handle this instead. crbug.com/381704
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 if (layer_impl) 1314 if (layer_impl)
1334 layer_impl->NotifyTileStateChanged(tile); 1315 layer_impl->NotifyTileStateChanged(tile);
1335 } 1316 }
1336 1317
1337 if (pending_tree_) { 1318 if (pending_tree_) {
1338 LayerImpl* layer_impl = 1319 LayerImpl* layer_impl =
1339 pending_tree_->FindPendingTreeLayerById(tile->layer_id()); 1320 pending_tree_->FindPendingTreeLayerById(tile->layer_id());
1340 if (layer_impl) 1321 if (layer_impl)
1341 layer_impl->NotifyTileStateChanged(tile); 1322 layer_impl->NotifyTileStateChanged(tile);
1342 } 1323 }
1324
1325 // Check for a non-null active tree to avoid doing this during shutdown.
1326 if (active_tree_ && !client_->IsInsideDraw() &&
1327 tile->priority(ACTIVE_TREE).distance_to_visible == 0.f) {
1328 // The LayerImpl::NotifyTileStateChanged() should damage the layer, so this
1329 // redraw will make those tiles be displayed.
1330 SetNeedsRedraw();
1331 }
1343 } 1332 }
1344 1333
1345 void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) { 1334 void LayerTreeHostImpl::SetMemoryPolicy(const ManagedMemoryPolicy& policy) {
1346 SetManagedMemoryPolicy(policy, zero_budget_); 1335 SetManagedMemoryPolicy(policy, zero_budget_);
1347 } 1336 }
1348 1337
1349 void LayerTreeHostImpl::SetTreeActivationCallback( 1338 void LayerTreeHostImpl::SetTreeActivationCallback(
1350 const base::Closure& callback) { 1339 const base::Closure& callback) {
1351 DCHECK(proxy_->IsImplThread()); 1340 DCHECK(proxy_->IsImplThread());
1352 DCHECK(settings_.impl_side_painting || callback.is_null()); 1341 DCHECK(settings_.impl_side_painting || callback.is_null());
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
1681 else 1670 else
1682 DCHECK(!enable); 1671 DCHECK(!enable);
1683 } 1672 }
1684 1673
1685 void LayerTreeHostImpl::WillBeginImplFrame(const BeginFrameArgs& args) { 1674 void LayerTreeHostImpl::WillBeginImplFrame(const BeginFrameArgs& args) {
1686 // Sample the frame time now. This time will be used for updating animations 1675 // Sample the frame time now. This time will be used for updating animations
1687 // when we draw. 1676 // when we draw.
1688 UpdateCurrentBeginFrameArgs(args); 1677 UpdateCurrentBeginFrameArgs(args);
1689 // Cache the begin impl frame interval 1678 // Cache the begin impl frame interval
1690 begin_impl_frame_interval_ = args.interval; 1679 begin_impl_frame_interval_ = args.interval;
1680
1681 if (settings().impl_side_painting &&
1682 tile_manager_->has_active_visible_tile_scheduled()) {
1683 // Pre-emptively schedule a draw now if any visible tile is being created,
1684 // so that we will expect it with our decisions for choosing a deadline for
1685 // the impl frame we are beginning now.
1686 SetNeedsRedraw();
reveman 2014/10/30 19:37:42 So this is just speculative. Would be nice if we h
danakj 2014/10/30 19:49:07 I could add something, but it wouldn't be that dif
reveman 2014/10/31 00:44:01 Ok, SetNeedsRedraw really means something like Set
danakj 2014/10/31 15:39:46 We could, I lean slightly toward leaving it how it
reveman 2014/10/31 16:08:50 Yes, SetMayNeedRedraw? :) Let's not worry about th
1687 }
1691 } 1688 }
1692 1689
1693 void LayerTreeHostImpl::UpdateViewportContainerSizes() { 1690 void LayerTreeHostImpl::UpdateViewportContainerSizes() {
1694 LayerImpl* inner_container = active_tree_->InnerViewportContainerLayer(); 1691 LayerImpl* inner_container = active_tree_->InnerViewportContainerLayer();
1695 LayerImpl* outer_container = active_tree_->OuterViewportContainerLayer(); 1692 LayerImpl* outer_container = active_tree_->OuterViewportContainerLayer();
1696 1693
1697 if (!inner_container || !top_controls_manager_) 1694 if (!inner_container || !top_controls_manager_)
1698 return; 1695 return;
1699 1696
1700 ViewportAnchor anchor(InnerViewportScrollLayer(), 1697 ViewportAnchor anchor(InnerViewportScrollLayer(),
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1802 pending_tree_->SetPageScaleDelta(active_tree_->page_scale_delta() / 1799 pending_tree_->SetPageScaleDelta(active_tree_->page_scale_delta() /
1803 active_tree_->sent_page_scale_delta()); 1800 active_tree_->sent_page_scale_delta());
1804 pending_tree_->set_top_controls_delta( 1801 pending_tree_->set_top_controls_delta(
1805 active_tree_->top_controls_delta() - 1802 active_tree_->top_controls_delta() -
1806 active_tree_->sent_top_controls_delta()); 1803 active_tree_->sent_top_controls_delta());
1807 1804
1808 client_->OnCanDrawStateChanged(CanDraw()); 1805 client_->OnCanDrawStateChanged(CanDraw());
1809 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree:waiting", pending_tree_.get()); 1806 TRACE_EVENT_ASYNC_BEGIN0("cc", "PendingTree:waiting", pending_tree_.get());
1810 } 1807 }
1811 1808
1812 void LayerTreeHostImpl::UpdateVisibleTiles() {
1813 if (tile_manager_ && tile_manager_->UpdateVisibleTiles())
1814 DidInitializeVisibleTile();
1815 need_to_update_visible_tiles_before_draw_ = false;
1816 }
1817
1818 void LayerTreeHostImpl::ActivateSyncTree() { 1809 void LayerTreeHostImpl::ActivateSyncTree() {
1819 need_to_update_visible_tiles_before_draw_ = true;
1820
1821 if (pending_tree_) { 1810 if (pending_tree_) {
1822 TRACE_EVENT_ASYNC_END0("cc", "PendingTree:waiting", pending_tree_.get()); 1811 TRACE_EVENT_ASYNC_END0("cc", "PendingTree:waiting", pending_tree_.get());
1823 1812
1824 active_tree_->SetRootLayerScrollOffsetDelegate(NULL); 1813 active_tree_->SetRootLayerScrollOffsetDelegate(NULL);
1825 active_tree_->PushPersistedState(pending_tree_.get()); 1814 active_tree_->PushPersistedState(pending_tree_.get());
1826 // Process any requests in the UI resource queue. The request queue is 1815 // Process any requests in the UI resource queue. The request queue is
1827 // given in LayerTreeHost::FinishCommitOnImplThread. This must take place 1816 // given in LayerTreeHost::FinishCommitOnImplThread. This must take place
1828 // before the swap. 1817 // before the swap.
1829 pending_tree_->ProcessUIResourceRequestQueue(); 1818 pending_tree_->ProcessUIResourceRequestQueue();
1830 1819
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
2070 } 2059 }
2071 2060
2072 tile_manager_ = TileManager::Create(this, 2061 tile_manager_ = TileManager::Create(this,
2073 task_runner, 2062 task_runner,
2074 resource_pool_.get(), 2063 resource_pool_.get(),
2075 raster_worker_pool_->AsRasterizer(), 2064 raster_worker_pool_->AsRasterizer(),
2076 rendering_stats_instrumentation_, 2065 rendering_stats_instrumentation_,
2077 settings().scheduled_raster_task_limit); 2066 settings().scheduled_raster_task_limit);
2078 2067
2079 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy()); 2068 UpdateTileManagerMemoryPolicy(ActualManagedMemoryPolicy());
2080 need_to_update_visible_tiles_before_draw_ = false;
2081 } 2069 }
2082 2070
2083 void LayerTreeHostImpl::DestroyTileManager() { 2071 void LayerTreeHostImpl::DestroyTileManager() {
2084 tile_manager_ = nullptr; 2072 tile_manager_ = nullptr;
2085 resource_pool_ = nullptr; 2073 resource_pool_ = nullptr;
2086 staging_resource_pool_ = nullptr; 2074 staging_resource_pool_ = nullptr;
2087 raster_worker_pool_ = nullptr; 2075 raster_worker_pool_ = nullptr;
2088 } 2076 }
2089 2077
2090 bool LayerTreeHostImpl::UsePendingTreeForSync() const { 2078 bool LayerTreeHostImpl::UsePendingTreeForSync() const {
(...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after
2981 ClearCurrentlyScrollingLayer(); 2969 ClearCurrentlyScrollingLayer();
2982 } 2970 }
2983 if (top_controls_manager_) 2971 if (top_controls_manager_)
2984 top_controls_manager_->PinchEnd(); 2972 top_controls_manager_->PinchEnd();
2985 client_->SetNeedsCommitOnImplThread(); 2973 client_->SetNeedsCommitOnImplThread();
2986 // When a pinch ends, we may be displaying content cached at incorrect scales, 2974 // When a pinch ends, we may be displaying content cached at incorrect scales,
2987 // so updating draw properties and drawing will ensure we are using the right 2975 // so updating draw properties and drawing will ensure we are using the right
2988 // scales that we want when we're not inside a pinch. 2976 // scales that we want when we're not inside a pinch.
2989 active_tree_->set_needs_update_draw_properties(); 2977 active_tree_->set_needs_update_draw_properties();
2990 SetNeedsRedraw(); 2978 SetNeedsRedraw();
2991 // TODO(danakj): Don't set root damage. Just updating draw properties and
2992 // getting new tiles rastered should be enough! crbug.com/427423
2993 SetFullRootLayerDamage();
2994 } 2979 }
2995 2980
2996 static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, 2981 static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info,
2997 LayerImpl* layer_impl) { 2982 LayerImpl* layer_impl) {
2998 if (!layer_impl) 2983 if (!layer_impl)
2999 return; 2984 return;
3000 2985
3001 gfx::Vector2d scroll_delta = 2986 gfx::Vector2d scroll_delta =
3002 gfx::ToFlooredVector2d(layer_impl->ScrollDelta()); 2987 gfx::ToFlooredVector2d(layer_impl->ScrollDelta());
3003 if (!scroll_delta.IsZero()) { 2988 if (!scroll_delta.IsZero()) {
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
3476 } 3461 }
3477 3462
3478 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3463 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3479 std::vector<PictureLayerImpl*>::iterator it = 3464 std::vector<PictureLayerImpl*>::iterator it =
3480 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3465 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3481 DCHECK(it != picture_layers_.end()); 3466 DCHECK(it != picture_layers_.end());
3482 picture_layers_.erase(it); 3467 picture_layers_.erase(it);
3483 } 3468 }
3484 3469
3485 } // namespace cc 3470 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698