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

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

Issue 13817003: Damage root layer when viewport or top controls changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix LayerTreeHostDelegatedTestLayerUsesFrameDamage Created 7 years, 8 months 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_impl.h ('k') | cc/trees/layer_tree_host_perftest.cc » ('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_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/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 1142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1153 void LayerTreeHostImpl::OnSwapBuffersComplete() { 1153 void LayerTreeHostImpl::OnSwapBuffersComplete() {
1154 client_->OnSwapBuffersCompleteOnImplThread(); 1154 client_->OnSwapBuffersCompleteOnImplThread();
1155 } 1155 }
1156 1156
1157 void LayerTreeHostImpl::Readback(void* pixels, 1157 void LayerTreeHostImpl::Readback(void* pixels,
1158 gfx::Rect rect_in_device_viewport) { 1158 gfx::Rect rect_in_device_viewport) {
1159 DCHECK(renderer_); 1159 DCHECK(renderer_);
1160 renderer_->GetFramebufferPixels(pixels, rect_in_device_viewport); 1160 renderer_->GetFramebufferPixels(pixels, rect_in_device_viewport);
1161 } 1161 }
1162 1162
1163 bool LayerTreeHostImpl::haveRootScrollLayer() const { 1163 bool LayerTreeHostImpl::HaveRootScrollLayer() const {
1164 return !!RootScrollLayer(); 1164 return !!RootScrollLayer();
1165 } 1165 }
1166 1166
1167 LayerImpl* LayerTreeHostImpl::RootLayer() const { 1167 LayerImpl* LayerTreeHostImpl::RootLayer() const {
1168 return active_tree_->root_layer(); 1168 return active_tree_->root_layer();
1169 } 1169 }
1170 1170
1171 LayerImpl* LayerTreeHostImpl::RootScrollLayer() const { 1171 LayerImpl* LayerTreeHostImpl::RootScrollLayer() const {
1172 return active_tree_->RootScrollLayer(); 1172 return active_tree_->RootScrollLayer();
1173 } 1173 }
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1376 1376
1377 layout_viewport_size_ = layout_viewport_size; 1377 layout_viewport_size_ = layout_viewport_size;
1378 device_viewport_size_ = device_viewport_size; 1378 device_viewport_size_ = device_viewport_size;
1379 1379
1380 UpdateMaxScrollOffset(); 1380 UpdateMaxScrollOffset();
1381 1381
1382 if (renderer_) 1382 if (renderer_)
1383 renderer_->ViewportChanged(); 1383 renderer_->ViewportChanged();
1384 1384
1385 client_->OnCanDrawStateChanged(CanDraw()); 1385 client_->OnCanDrawStateChanged(CanDraw());
1386 SetFullRootLayerDamage();
1386 } 1387 }
1387 1388
1388 static void AdjustScrollsForPageScaleChange(LayerImpl* layer_impl, 1389 static void AdjustScrollsForPageScaleChange(LayerImpl* layer_impl,
1389 float page_scale_change) { 1390 float page_scale_change) {
1390 if (!layer_impl) 1391 if (!layer_impl)
1391 return; 1392 return;
1392 1393
1393 if (layer_impl->scrollable()) { 1394 if (layer_impl->scrollable()) {
1394 // We need to convert impl-side scroll deltas to page_scale space. 1395 // We need to convert impl-side scroll deltas to page_scale space.
1395 gfx::Vector2dF scroll_delta = layer_impl->scroll_delta(); 1396 gfx::Vector2dF scroll_delta = layer_impl->scroll_delta();
1396 scroll_delta.Scale(page_scale_change); 1397 scroll_delta.Scale(page_scale_change);
1397 layer_impl->SetScrollDelta(scroll_delta); 1398 layer_impl->SetScrollDelta(scroll_delta);
1398 } 1399 }
1399 1400
1400 for (size_t i = 0; i < layer_impl->children().size(); ++i) 1401 for (size_t i = 0; i < layer_impl->children().size(); ++i)
1401 AdjustScrollsForPageScaleChange(layer_impl->children()[i], 1402 AdjustScrollsForPageScaleChange(layer_impl->children()[i],
1402 page_scale_change); 1403 page_scale_change);
1403 } 1404 }
1404 1405
1405 void LayerTreeHostImpl::SetOverdrawBottomHeight(float overdraw_bottom_height) { 1406 void LayerTreeHostImpl::SetOverdrawBottomHeight(float overdraw_bottom_height) {
1406 if (overdraw_bottom_height == overdraw_bottom_height_) 1407 if (overdraw_bottom_height == overdraw_bottom_height_)
1407 return; 1408 return;
1408 overdraw_bottom_height_ = overdraw_bottom_height; 1409 overdraw_bottom_height_ = overdraw_bottom_height;
1409 1410
1410 UpdateMaxScrollOffset(); 1411 UpdateMaxScrollOffset();
1412 SetFullRootLayerDamage();
1411 } 1413 }
1412 1414
1413 void LayerTreeHostImpl::SetDeviceScaleFactor(float device_scale_factor) { 1415 void LayerTreeHostImpl::SetDeviceScaleFactor(float device_scale_factor) {
1414 if (device_scale_factor == device_scale_factor_) 1416 if (device_scale_factor == device_scale_factor_)
1415 return; 1417 return;
1416 device_scale_factor_ = device_scale_factor; 1418 device_scale_factor_ = device_scale_factor;
1417 1419
1418 UpdateMaxScrollOffset(); 1420 UpdateMaxScrollOffset();
1421 SetFullRootLayerDamage();
1419 } 1422 }
1420 1423
1421 void LayerTreeHostImpl::UpdateMaxScrollOffset() { 1424 void LayerTreeHostImpl::UpdateMaxScrollOffset() {
1422 active_tree_->UpdateMaxScrollOffset(); 1425 active_tree_->UpdateMaxScrollOffset();
1423 } 1426 }
1424 1427
1425 void LayerTreeHostImpl::setActiveTreeNeedsUpdateDrawProperties() { 1428 void LayerTreeHostImpl::DidChangeTopControlsPosition() {
1429 client_->SetNeedsRedrawOnImplThread();
1426 active_tree_->set_needs_update_draw_properties(); 1430 active_tree_->set_needs_update_draw_properties();
1427 } 1431 SetFullRootLayerDamage();
1428
1429 void LayerTreeHostImpl::setNeedsRedraw() {
1430 client_->SetNeedsRedrawOnImplThread();
1431 } 1432 }
1432 1433
1433 bool LayerTreeHostImpl::EnsureRenderSurfaceLayerList() { 1434 bool LayerTreeHostImpl::EnsureRenderSurfaceLayerList() {
1434 active_tree_->UpdateDrawProperties(LayerTreeImpl::UPDATE_ACTIVE_TREE); 1435 active_tree_->UpdateDrawProperties(LayerTreeImpl::UPDATE_ACTIVE_TREE);
1435 return !active_tree_->RenderSurfaceLayerList().empty(); 1436 return !active_tree_->RenderSurfaceLayerList().empty();
1436 } 1437 }
1437 1438
1438 InputHandlerClient::ScrollStatus LayerTreeHostImpl::ScrollBegin( 1439 InputHandlerClient::ScrollStatus LayerTreeHostImpl::ScrollBegin(
1439 gfx::Point viewport_point, InputHandlerClient::ScrollInputType type) { 1440 gfx::Point viewport_point, InputHandlerClient::ScrollInputType type) {
1440 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin"); 1441 TRACE_EVENT0("cc", "LayerTreeHostImpl::ScrollBegin");
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
2087 } 2088 }
2088 2089
2089 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) { 2090 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) {
2090 if (debug_state_.continuous_painting != debug_state.continuous_painting) 2091 if (debug_state_.continuous_painting != debug_state.continuous_painting)
2091 paint_time_counter_->ClearHistory(); 2092 paint_time_counter_->ClearHistory();
2092 2093
2093 debug_state_ = debug_state; 2094 debug_state_ = debug_state;
2094 } 2095 }
2095 2096
2096 } // namespace cc 2097 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698